Javascript 使用循环中的参数i为添加事件侦听器
我将listener附加到一个div的所有子对象上,告诉他们如何使用与父对象相关的数字发出警报。因为函数执行实际变量i,而不是附加时Javascript 使用循环中的参数i为添加事件侦听器,javascript,Javascript,我将listener附加到一个div的所有子对象上,告诉他们如何使用与父对象相关的数字发出警报。因为函数执行实际变量i,而不是附加时 var nodes = div.children; //10 nodes for (var i = 0; i < nodes.length; i++) { nodes[i].onclick = function () {alert(i)} } var节点=div.children//10节点 对于(var i=0;i
var nodes = div.children; //10 nodes
for (var i = 0; i < nodes.length; i++) {
nodes[i].onclick = function () {alert(i)}
}
var节点=div.children//10节点
对于(var i=0;i
因此,唯一的解决方案是使用eval('i')?使用闭包并传递索引
var nodes = div.children; //10 nodes
for (var i = 0; i < nodes.length; i++) {
(function(index){
nodes[index].onclick = function () {alert(index)}
})(i);
}
var节点=div.children//10节点
对于(var i=0;i
另外两个可能的答案是:
nodes[i].setAttribute('onclick','alert('+i+')');
或:
nodes[i].setAttribute('index', i);
nodes[i].onclick = function(){
alert(this.getAttribute('index'));
//remember attribute index is string, so do parseInt() when required
}