2012-09-09 17 views
0

我試圖建立不同的監聽的對象的列表:JavaScript將arugments傳遞給mouseover函數?

for(i=0;i<numInputs;i++) { 
    var inPort = inputPorts.get(i); 
    var portName = inPort.getProperty("name"); 
    inPort.shape.attr({ cursor: 'pointer' }).mouseover(function(e) { mouseOverInfo.text("PORT:: "+portName); }); 
} 

發生了什麼事,現在是每個端口對象只獲得了作爲自己的最後一個元素的名稱。因此,當我將鼠標懸停時,我只返回最後一個對象的名稱。

如何正確執行此操作?

感謝

+3

的可能重複[關閉的Javascript內循環 - 簡單實用的例子(http://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-example) –

回答

1

使用自調用函數像這樣以避免在環閉合問題:

for(i=0;i<numInputs;i++) { 
    (function(i){ 
    var inPort = inputPorts.get(i); 
    var portName = inPort.getProperty("name"); 
    inPort.shape.attr({ cursor: 'pointer' }).mouseover(function(e) { mouseOverInfo.text("PORT:: "+portName); }); 
    })(i) 
} 
+0

對,感謝的人 – JDS

+0

@YoungMoney:不客氣 – Blaster