嘿,我有一个像这样的简单循环:
for(var i in nodes) {
var d = document.createElement('div');
d.className = 'box';
d.id = 'node' + i;
document.getElementById('node').appendChild(d);
document.getElementById('node'+ i).innerHTML = nodes[i].name;
document.getElementById('node'+ i).addEventListener('mousedown', function() {
var info = nodes[i]; display_parent(info);
}, false);
}
function display_parent(data){
console.log(data);
}
问题是所有div都持有相同的信息the last one in the loop
,我试图将数据分配给info
的局部变量,但它仍然不起作用。
我有什么想法可以解决这个问题吗?
答案 0 :(得分:1)
这是由于'mousedown'事件处理程序中的闭包造成的。你必须使用这样的东西:
document.getElementById('node'+i).addEventListener('mousedown',
(function(node) {
return (function() {
display_parent(node);
});
}(nodes[i])), false);