0

嘿,我有一个像这样的简单循环:

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但它仍然不起作用。

有什么想法可以解决这个问题吗?

4

1 回答 1

1

这是由于“mousedown”事件处理程序中的关闭。你必须使用这样的东西:

document.getElementById('node'+i).addEventListener('mousedown',
  (function(node) {
    return (function() {
       display_parent(node);
     });
  }(nodes[i])), false);
于 2013-02-01T07:11:10.750 回答