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);
}
addEventListener方法 用于 Mozilla系列
举例:
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
写成这样:
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
如果是Mozilla系列,并不支持该方法,需要用到addEventListener
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
使用实例:
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/0196c3df5ea9e936f21e9932cca91014.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/0196c3df5ea9e936f21e9932cca91014.gif)
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);
闭包是什么和其他用武之地暂时不理。