Я пытаюсь понять область переменной в Javascript. Вот что я делаю:javascript: локализовать переменные в блоке
<script>
for (var i = 0; i < 3; i++) {
document.getElementById(i).onclick = function() {
console.log(i);
}
}
</script>
Выход всегда 3, и я понимаю, что это потому, что i
был сохранен в качестве ссылки. Как мне локализовать i
, чтобы он мог регистрировать увеличенное значение?
Спасибо!
обновления
Спасибо, ребята для быстрых и порядочных ответов. решения действительно помогают!
Изначально я пытался аналогичный подход к @GrailsGuy, вот оно:
<script>
for (var i = 1; i <= 3; i++) {
document.getElementById(i).onclick = function() {
console.log(logCall(i));
}
}
function logCall(i) {
return i;
}
</script>
Но, похоже, i
не локализована. Не могу понять, почему!
Есть ли у него что-то делать с этим событием OnClick? Как он может прокручивать onclick, если пользователь только щелкает один раз? И вам нужна функция logCall()? Разве это не будет так же, как console.log (i)? – oobie11
Что касается вашего редактирования, это та же проблема, что и в вашем первом примере. Имеете ли вы 'console.log (i)' или 'superlongandconfusingfunctionname (i)' внутри обработчика событий, не имеет значения. Вы пытаетесь получить доступ к 'i' после завершения цикла. –