Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    comportamento anomalo di function

    provate questo semplicissimo script... tanto per riprodurre il problema

    codice:
    <script>
    var i;
    for (i=0;i< 5;i++) {
    	var bbb=document.createElement('input');
    	bbb.value=i;
    	bbb.onmouseover=function () { document.title+=i; };
    	document.body.insertBefore(bbb, null);
    }
    </script>
    vi siete accorti?! aiutatemi a capire cosa mi sfugge

    grazie!

  2. #2
    nel senso che ti mette sempre il numero 5?

  3. #3
    esatto! ... mi sto rileggendo il manuale, ma continua a sfuggirmi il perchè

  4. #4
    quando asseggni il mouse over all'input gli stai dicendo di aggiungere i
    ...ma ormai i è uguale a 5

    è una variabile globale che alla fine del ciclo ha un suo valore (5) che viene utilizzato nel momento in cui scateni l'evento



  5. #5
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    l' onmouseover si verifica quando il ciclo e' finito,
    la tua variabile, globale, ha oramai come valore l' ultimo assunto nel ciclo

    serve una closure per mantenere in scope la variabile
    prova
    bbb.onmouseover=(function(s){return function(){document.title+=s;}})(i);

    ciao

  6. #6
    giusto! grazie ad entrambi... continuavo a pensare che al momento di creare la funzione i dovesse essere sostituita con il suo valore

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.