Чтобы понять эту проблему, вы должны узнать, что такое замыкание . Затем вы также должны знать, как javascript работает с областью действия (например, на функциональной основе, а не на блочной основе, например, в C).
Вот "стандартное" решение:
<a href="#">text</a><br><a href="#">link</a>
<script type="text/javascript">
var as = document.getElementsByTagName('a');
for ( var i = as.length; i--; ) {
as[i].onclick = (function(i) {
return function() {
alert(i);
return false;
}
})(i);
}
</script>
Другая версия, которая делает точно то же самое, но может быть легче понять, если вы не привыкли к замыканиям и области действия в JS:
for ( var i = as.length; i--; ) {
as[i].onclick = (function(number) {
return function() {
alert(number);
return false;
}
})(i);
Есть идея?