这个问题让我疯了... 我有一个循环,它向SVG对象添加事件监听器。为了举例,该对象是一个小圆圈,我必须为每个圆圈添加mouseover和mouseout事件。
我的第一个问题是标准的闭包作用域问题 - 因为所有的监听器都是在同一个循环中添加的,它们都看到相同的循环变量的无效值。我认为我可以解决这个问题,但第二个问题是我必须将 'event'传递给监听器,而我找不到同时解决这两个问题的方法。
我尝试了各种版本的以下代码:
for(month = 0; month < nMonths; month++) {
...
shape.addEventListener(
"mouseover",
(function(event, index) { popup_on(event, foo, index); })(event, month),
false);
group.appendChild(shape);
}
我使用的是这个版本出现了“event未定义”的错误。popup_on
是真正的处理器,必须获取event
和month
的当前值。你知道我应该怎么做吗?谢谢。