本文示例以 attachEvent 说明,addEventListener 同理。
for (var i = 0; i < objs.length; i++)
{
objs[i].attachEvent("onclick", function() {
alert(i);
});
}
如上代码,它的目的是想对于每个 obj 点击时,分别显示 i 当时的值:0、1、2……
但是,郁闷的是,每个 obj 被点击的时候,alert 的值都是一样的,都是 i 最后的值。有没有什么办法解决循环时各自参数的问题呢?
办法是:把事件绑定代码写在另一个函数中。
function attach(obj, i)
{
obj.attachEvent("onclick", function() {
alert(i);
});
}
for (var i = 0; i < objs.length; i++)
{
attach(objs[i], i);
}