只有我的for循环中的最后一个数据分配

时间:2013-02-01 07:03:09

标签: javascript

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

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的局部变量,但它仍然不起作用。

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

1 个答案:

答案 0 :(得分:1)

这是由于'mousedown'事件处理程序中的闭包造成的。你必须使用这样的东西:

document.getElementById('node'+i).addEventListener('mousedown',
  (function(node) {
    return (function() {
       display_parent(node);
     });
  }(nodes[i])), false);