This question already has answers here:
Event handlers inside a Javascript loop - need a closure?
(1 个回答)
Javascript infamous Loop issue? [duplicate]
(5 个回答)
8年前关闭。
我有一个函数 add_the_handler 将 onclick 事件绑定(bind)到每个节点。当我单击任何节点时,以下示例在每个警报窗口中打印
fiddle 在这里:http://jsfiddle.net/D886E/3/
为什么节点不在警报窗口中打印不同的值 1,2,3?
(1 个回答)
Javascript infamous Loop issue? [duplicate]
(5 个回答)
8年前关闭。
我有一个函数 add_the_handler 将 onclick 事件绑定(bind)到每个节点。当我单击任何节点时,以下示例在每个警报窗口中打印
"3"
:var add_the_handlers = function (nodes) {
var i;
for (i=0; i< nodes.length; i+=1) {
nodes[i].onclick = function (e) {
alert(i);
};
}
};
fiddle 在这里:http://jsfiddle.net/D886E/3/
为什么节点不在警报窗口中打印不同的值 1,2,3?
最佳答案
检查这个 fiddle 。基本上,您需要一个函数 clojure 来处理将监听器附加到循环中的适当索引
var add_the_handlers = function (nodes) {
var i;
for (i = 0; i < nodes.length; i += 1) {
(function (i) {
nodes[i].onclick = function (e) {
alert(i);
};
})(i);
}
};
pnodes = document.getElementsByClassName("node");
add_the_handlers(pnodes);
关于javascript - 将 onclick 绑定(bind)到循环中的节点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17017386/