Javascript将aruggments传递给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); }); 
}

现在发生的情况是,每个端口对象都只获得最后一个元素的名称作为自己的名称。所以当我把鼠标移到上面时,只返回最后一个对象的名称。

如何正确地做到这一点?

感谢

使用这样的自调用函数来避免循环中的闭包问题:

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)
}

最新更新