为什么 anchor 在点击时会发出警报 -1
而不是循环内各自的计数器?如何修复代码以便它确实向正确的号码发出警报?
<a href="#">text</a><br><a href="#">link</a>
<script>
var as = document.getElementsByTagName('a');
for ( var i = as.length; i--; ) {
as[i].onclick = function() {
alert(i);
return false;
}
}
</script>
最佳答案
这是一个闭包问题:您在循环内定义的每个匿名函数都会在 for 循环末尾读取“i”的值。
您需要另一个范围,例如调用设置 onclick 处理程序的函数。
function add_onclick(el, i) {
el.onclick = function() {
alert(i);
return false;
}
}
var as = document.getElementsByTagName('a');
for ( var i = as.length; i--; ) {
add_onclick(as[i],i);
}
关于javascript - 警报 -1 而不是循环内各自的计数器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20459886/