JavaScript - 如何动态添加onclick事件并传递特定值?

3
请您快速查看示例代码(http://jsfiddle.net/vXvs2/),以下是我的疑问:它是否明确表明了事件创建时的 i 值。我认为它实际上显示的是触发事件时的 i 值。请问如何解决这个问题?请注意不要删除HTML标签。

可能是在循环中设置onclick使用变量的当前值的重复问题,还有数百万个类似的问题。 - Esailija
1个回答

6

将循环体包装在一个函数中,以创建闭包:

for(var i = 0; i < arr.length; i++){
    (function(i){ //i inside this function is a local var; not affected by i++
        arr[i].onclick = function(){
            alert(i);
            return false;
        };
    })(i); //Invoke the function, pass variable i 
}

Fiddle: http://jsfiddle.net/vXvs2/4/


完美,我已经寻找这个很久了。+1 - Ash Burlaczenko
此外,如果DOM节点被修改,您还可以传递arr[i]。http://jsfiddle.net/vXvs2/5/ - Rob W

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接