在各浏览器中动态添加事件-循环绑定事件的循环参数问题

作者:vkvi 来源:ITPOW(原创) 日期:2010-2-23

本文示例以 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);
}

 


相关文章