将参数传递到事件响应函数的四种方法综述
如何将参数传递给事件处理程序在与Javascript接触时,由于对闭包的理解不足,常常会陷入问题之中。在讨论组中经常遇到这样的问题,如下所示
复制代码代码如下所示:
如何将参数传递给事件处理程序
点击我
var
函数:(EL,类型,FN){
el.addeventlistener
El.addEventListener(型、FN、假):
el.attachevent(+型,FN);
},
联合国:函数(EL,类型,FN){
el.removeeventlistener
El.removeEventListener(型、FN、假):
el.detachevent(+型,FN);
}
};
VaR V1 =杰克,V2 = 'lily;
功能(arg1,arg2){处理程序
警报(arg1);
警报(2);
}
如何使参数V1、V2到处理程序
作为处理程序的第一个参数传递的默认事件对象,
然后单击该链接,第一个POP是事件对象,第二个是未定义的。
E.on(document.getelementbyid(AA),点击',处理程序);
如何将参数V1、V2传递给处理程序默认事件对象将作为处理程序的第一个参数传递,当第一个单击链接是事件对象时,第二个对象是未定义的。
方案一,毫无保留的事件对象作为第一个参数传递
复制代码代码如下所示:
功能(arg1,arg2){处理程序
警报(arg1);
警报(2);
}
E.on(document.getelementbyid(AA),点击功能(){())
汉德勒(arg1,arg2);
});
方案二,保留事件对象作为第一个参数
复制代码代码如下所示:
处理函数(E,arg1,arg2){
警报(e);
警报(arg1);
警报(2);
}
E.on(document.getelementbyid(AA),点击功能(e){)
汉德勒(E,arg1,arg2);
});
方案三,加getcallback的function.prototype,不保留事件对象
复制代码代码如下所示:
function.prototype.getcallback =函数(){
无功_this =,=参数args;
返回函数(e){
返回_this.apply(这| |窗口,args);
};
}
E.on(document.getelementbyid(AA),点击',handler.getcallback(V1,V2));
方案四,加getcallback的function.prototype,保持事件对象作为第一个参数
复制代码代码如下所示:
function.prototype.getcallback =函数(){
无功_this =,= {一};
对于(var i = 0,L = arguments.length;i < L;i++){
{ 1 } =我+ args参数{我};
}
返回函数(e){
args { 0 } = E;
返回_this.apply(这| |窗口,args);
};
}
E.on(document.getelementbyid(AA),点击',handler.getcallback(V1,V2));