这里我的目的是迭代元素数组,并在每个元素上设置事件处理函数,同时还将当前迭代器值绑定到该事件处理函数。我想出来的是:将索引值绑定到事件处理程序
for (var i = 0; i < elementArray.length; ++i)
{
var elem = elementArray[i];
elem.onmouseover = function() { foo(i); }
}
function foo(index)
{
alert(index);
}
这里我使用闭包绑定i
到foo
。问题是,当foo
被实际调用时,i
总是等于elementArray.length
,因为当调用foo
时,i
已经增加到最大值。我想在这里我想要的是将i
的新副本绑定到每个匿名函数,以便它将正确的值传递给foo
。但我不确定要做到这一点的最佳方法是什么。
不,你不使用闭包,或者至少不够他们:-) for循环的'{}'做**不* *创建一个新的变量范围。 JavaScript中唯一能做到的就是一个函数。 – Pointy 2012-02-22 17:08:48