9
22
2008
1

[JAVASCRIPT]动态onclick的参数问题

在动态生成一个对象的onclick事件时我们都是这样写

element.onclick=functionName;

例:a.onclick=set(a);

这样写法参数是无法传递的

而且有自动被执行的问题(不自动执行可以这样写:a.onclick=set,只写方法名)

找到了一个小方法解决了问题

element.onclick=function() {
    functionName(param);
};

例:

a.onclick=function(){
    set(a);
}

但是又遇到一个问题,当参数时动态变化时,比如上例中a要是在循环中动态改变的,会出现每次循环a的值都是最后一次的值

后来查到另外一种写法据说叫做闭包?

a.onclick = (
function(param){
    return function(){
        set(param);
    }
})(param)

解决了这个问题

Category: JavaScript | Tags: 闭包 动态参数

Host by is-Programmer.com | Power by Chito 1.3.3 beta | Theme: Aeros 2.0 by TheBuckmaker.com