我有以下代码:
for(var i = 0; i < nodelist.length; i++) {
var x = functionThatCreatesADivElement();
someElement.appendChild(x.getDiv()); // this works fine
nodelist[i].onclick = function() {
x.someFunction(); // this always refer to the last 'x' object
}
}
function functionThatCreatesADivElement() {
var div = document.createElement("div");
this.someFunction = function() {}
this.getDiv = function() {
return div;
}
return this;
}
问题是 的执行与(假设 i = 4 是最后一个节点)nodelist[0].onclick
完全相同。nodelist[4].onclick
我相信先前迭代的引用正在更改为指向当前迭代的元素。
这样做的正确方法是什么?
编辑:添加了更多代码并更改了函数的名称,因为它太混乱了