javascript中attachEvent、addEventListener用法和区别

一般我们在JS中添加事件,是这样子的

obj.οnclick=method

这种绑定事件的方式,兼容主流浏览器,但如果一个元素上添加多次同一事件呢?

?
1
2
3
obj.onclick=method1
obj.onclick=method2
obj.onclick=method3

如果这样写,那么只有最后绑定的事件,这里是method3会被执行,这个时候我们就不能用onclick这样的写法了,主角改登场了,在IE中我们可以使用attachEvent方法

?
1
2
3
btn1Obj.attachEvent( "onclick" ,method1);
btn1Obj.attachEvent( "onclick" ,method2);
btn1Obj.attachEvent( "onclick" ,method3);

使用格式是前面是事件类型,注意的是需要加on,比如onclick,onsubmit,onchange,执行顺序是

method3->method2->method1

可惜这个微软的私人方法,火狐和其他浏览器都不支持,幸运的是他们都支持W3C标准的addEventListener方法

?
1
2
3
btn1Obj.addEventListener( "click" ,method1, false );
btn1Obj.addEventListener( "click" ,method2, false );
btn1Obj.addEventListener( "click" ,method3, false );

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
<html xmlns= "http://www.w3.org/1999/xhtml" >
<head>
<title>attachEvent</title>
<script type= "text/javascript" >
//第一种方式(微软的私人方法)
function iniEvent() {
   var btn = document.getElementById( "btn" );
   btn.attachEvent( "onclick" , click1);
   btn.attachEvent( "onclick" , click2);
   btn.attachEvent( "onclick" , click3);
}
//第二种方式(火狐和其他浏览器)
function iniEvent2() {
   var btn = document.getElementById( "btn" );
   btn.addEventListener( "click" , click1, false );
   btn.addEventListener( "click" , click2, false );
   btn.addEventListener( "click" , click3, false );
}
function click1() {
   alert( 'click1' );
}
function click2() {
   alert( 'click2' );
}
function click3() {
   alert( 'click3' );
}
</script>
</head>
<body onload= "iniEvent()" >
<input type= "button" id= "btn" value= "attachEvent" />
</body>
</html>


    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值