cerco di capire la portata variabile in Javascript. Ecco quello che sto facendo:javascript: localizzare le variabili nel blocco
<script>
for (var i = 0; i < 3; i++) {
document.getElementById(i).onclick = function() {
console.log(i);
}
}
</script>
L'uscita è sempre 3, e capisco che è perché i
è stata mantenuta per riferimento. Come faccio a localizzare i
in modo che possa registrare il valore incrementato?
Grazie!
aggiornamento
Grazie ragazzi per risposte rapide e decente. le soluzioni sono davvero d'aiuto!
Inizialmente, stavo cercando un approccio simile a @GrailsGuy, eccolo:
<script>
for (var i = 1; i <= 3; i++) {
document.getElementById(i).onclick = function() {
console.log(logCall(i));
}
}
function logCall(i) {
return i;
}
</script>
ma sembra i
non viene localizzato. Non riesco a capire perché!
Ha qualcosa a che fare con l'evento onclick? Come è possibile eseguire il ciclo attraverso l'onclick se l'utente fa clic una sola volta? E hai bisogno della funzione logCall()? Non sarebbe lo stesso di console.log (i)? – oobie11
Per quanto riguarda la modifica, è lo stesso problema del primo esempio. Se si dispone di 'console.log (i)' o 'superlongandconfusingfunctionname (i)' all'interno del gestore di eventi non fare la differenza. Stai provando ad accedere a 'i' dopo che il ciclo è terminato. –