JS:attachEvent和addEventListener 使用方法
attachEvent方法,为某一事件附加其它的处理事件。(不支持Mozilla系列)
addEventListener方法 用于 Mozilla系列
举例:
如果这样写,那么将会只有medhot3被执行
写成这样:
执行顺序为method3->method2->method1
如果是Mozilla系列,并不支持该方法,需要用到addEventListener
执行顺序为method1->method2->method3
使用实例:
addEventListener方法 用于 Mozilla系列
举例:
document.getElementById(
"
btn
"
).onclick
=
method1;
document.getElementById( " btn " ).onclick = method2;
document.getElementById( " btn " ).onclick = method3;
document.getElementById( " btn " ).onclick = method2;
document.getElementById( " btn " ).onclick = method3;
写成这样:
var
btn1Obj
=
document.getElementById(
"
btn1
"
);
// object.attachEvent(event,function);
btn1Obj.attachEvent( " onclick " ,method1);
btn1Obj.attachEvent( " onclick " ,method2);
btn1Obj.attachEvent( " onclick " ,method3);
// object.attachEvent(event,function);
btn1Obj.attachEvent( " onclick " ,method1);
btn1Obj.attachEvent( " onclick " ,method2);
btn1Obj.attachEvent( " onclick " ,method3);
如果是Mozilla系列,并不支持该方法,需要用到addEventListener
var
btn1Obj
=
document.getElementById(
"
btn1
"
);
// element.addEventListener(type,listener,useCapture);
btn1Obj.addEventListener( " click " ,method1, false );
btn1Obj.addEventListener( " click " ,method2, false );
btn1Obj.addEventListener( " click " ,method3, false );
// element.addEventListener(type,listener,useCapture);
btn1Obj.addEventListener( " click " ,method1, false );
btn1Obj.addEventListener( " click " ,method2, false );
btn1Obj.addEventListener( " click " ,method3, false );
使用实例:
1
。
var el = EDITFORM_DOCUMENT.body;
// 先取得对象,EDITFORM_DOCUMENT实为一个iframe
if (el.addEventListener) {
el.addEventListener('click', KindDisableMenu, false);
} else if (el.attachEvent) {
el.attachEvent('onclick', KindDisableMenu);
}
2 。
if (window.addEventListener) {
window.addEventListener('load', _uCO, false);
} else if (window.attachEvent) {
window.attachEvent('onload', _uCO);
}
var el = EDITFORM_DOCUMENT.body;
// 先取得对象,EDITFORM_DOCUMENT实为一个iframe
if (el.addEventListener) {
el.addEventListener('click', KindDisableMenu, false);
} else if (el.attachEvent) {
el.attachEvent('onclick', KindDisableMenu);
}
2 。
if (window.addEventListener) {
window.addEventListener('load', _uCO, false);
} else if (window.attachEvent) {
window.attachEvent('onload', _uCO);
}
var newopen = function(id,level)
{
return function()
{
opentree(id,level);//该函数为外部定义的一个执行函数;
}
}
x.attachEvent("onclick",newopen(id,parseInt(level)+1));
y.attachEvent("onclick",newopen(id,parseInt(level)+2))
{
return function()
{
opentree(id,level);//该函数为外部定义的一个执行函数;
}
}
x.attachEvent("onclick",newopen(id,parseInt(level)+1));
y.attachEvent("onclick",newopen(id,parseInt(level)+2))
-----------------------------------------------------------------------------------------------------------------------------------
为事件传递参数需要用到js的闭包机制。给出一个场景:
js动态生成一些table row,每行包含控件若干,单击某空间可使这一行的背景变灰。可用代码如下:
node.attachEvent("onclick",function(rowCount){return function(){bgGray2(rowCount)}}(rowCount);
闭包是什么和其他用武之地暂时不理。