Bind onclick to nodes in a loop
本问题已经有最佳答案,请猛点这里访问。
我有一个函数add_the_handler,它将onclick事件绑定到每个节点。 当我单击任何节点时,以下示例在每个警报窗口中打印
1 2 3 4 5 6 7 8 9 10 | var add_the_handlers = function (nodes) { var i; for (i=0; i< nodes.length; i+=1) { nodes[i].onclick = function (e) { alert(i); }; } }; |
小提琴在这里:http://jsfiddle.net/D886E/3/
为什么节点不在警报窗口中打印不同的值1,2,3?
检查这个小提琴。 基本上你需要一个函数clojure来处理将侦听器附加到循环中的适当索引
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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); |