您的位置:首页 > Web前端 > JavaScript

JS:attachEvent和addEventListener 使用方法

2012-01-09 22:54 627 查看



JS:attachEvent和addEventListener 使用方法

attachEvent方法,为某一事件附加其它的处理事件。(不支持Mozilla系列)

addEventListener方法 用于 Mozilla系列

举例:


document.getElementById("btn").onclick = method1;


document.getElementById("btn").onclick = method2;


document.getElementById("btn").onclick = method3;

如果这样写,那么将会只有medhot3被执行

写成这样:


var btn1Obj = document.getElementById("btn1");


//object.attachEvent(event,function);


btn1Obj.attachEvent("onclick",method1);


btn1Obj.attachEvent("onclick",method2);


btn1Obj.attachEvent("onclick",method3);

执行顺序为method3->method2->method1

如果是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);

执行顺序为method1->method2->method3

使用实例:


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);


}


Javascript attachEvent传递参数的办法

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))

-----------------------------------------------------------------------------------------------------------------------------------

为事件传递参数需要用到js的闭包机制。给出一个场景:
js动态生成一些table row,每行包含控件若干,单击某空间可使这一行的背景变灰。可用代码如下:

node.attachEvent("onclick",function(rowCount){return function(){bgGray2(rowCount)}}(rowCount);
闭包是什么和其他用武之地暂时不理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: