2013-02-01 56 views
0

嘿,我有一個簡單的循環這樣的最後一個數據:只有在我的for循環分配

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

看起來你忘了關閉'for'循環 –

+0

woops fixed!是一個複製粘貼錯誤:P – Sir

+0

'i'的值沒有正確關閉。 –

回答

1

這是由於在'mousedown'事件處理程序中關閉。你必須使用這樣的東西:

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