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 に答える