Я относительно новичок в JS, так что это может быть распространенной проблемой, но я заметил что-то странное при работе с циклами и функцией onclick. Я смог воспроизвести проблему с помощью этого кода:
<html>
<head>
<script type="text/javascript">
window.onload = function () {
var buttons = document.getElementsByTagName('a');
for (var i=0; i<2; i++) {
buttons[i].onclick = function () {
alert(i);
return false;
}
}
}
</script>
</head>
<body>
<a href="">hi</a>
<br />
<a href="">bye</a>
</body>
</html>
При нажатии на ссылки я ожидаю получить "0" и "1", но вместо этого я получаю "2" для них обоих. Почему это?
Кстати, мне удалось решить мою конкретную проблему, используя ключевое слово 'this', но мне все еще интересно, что стоит за этим поведением.