我正在尝试为对象列表设置不同的侦听器:
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); });
}
现在正在发生的事情是每个端口对象只将最后一个元素的名称作为自己的名称。因此,当我鼠标悬停时,我只返回最后一个对象的名称。
如何正确地做到这一点?
由于
答案 0 :(得分: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)
}