我将听众附加到div的所有孩子,如何让他们提醒他们相对于他们的父母的号码。因为该函数执行实际变量i,而不是在附加时。
var nodes = div.children; //10 nodes
for (var i = 0; i < nodes.length; i++) {
nodes[i].onclick = function () {alert(i)}
}
所以唯一的解决方案是使用eval(&#39; i&#39;)?
答案 0 :(得分:2)
使用闭包并传递索引
var nodes = div.children; //10 nodes
for (var i = 0; i < nodes.length; i++) {
(function(index){
nodes[index].onclick = function () {alert(index)}
})(i);
}
答案 1 :(得分:0)
另外两个可能的答案可能是:
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
}