javascript - 警报 -1 而不是循环内各自的计数器?

标签 javascript jscript

为什么 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/

相关文章:

javascript - 获取项目的 `Local Project Path`中的 `Version Control Settings`目录

javascript - 如果存在 div,则激活函数

automation - WSH 安装的 JScript 版本可用性

javascript - 在 JavaScript 中,当完成通过 new ActiveXObject 创建的对象时,是否需要将其设置为 null?

javascript - AngularJS $http 没有触发 get 调用

java - Javascript 中的类型转换

regex - JScript 正则表达式 : start of line doesn't work?

javascript - 如何有两个淡入淡出,一个接一个地延迟和淡出?

javascript - 使用 ajax/setInterval 伪造推送通知?

javascript - 如何在纯 javascript 中更改输入焦点上的标签颜色?