javascript中attachEvent、addEventListener用法和区别
一般我们在JS中添加事件,是这样子的
obj.onclick=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"
<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>
|
相关推荐
- Python中datetime.now() 和 datetime.utcnow()的用法和区别
- JavaScript中=== 和 == 的区别、NaN 是什么 ?NaN == NaN?冒泡排序、选择排序、兼容语法以及递归函数。
- Vue中Computed和Watch的用法及区别
- JavaScript 中 var 和 let 和 const 关键字的区别
- C++中unordered_map,unordered_set,map和set的用法和区别
- python中list和tuple的用法及区别
- JavaScript中for和for in在遍历使用getElementsByName()获取的数组时的小区别
- 关于Content-Type中application/x-www-form-urlencoded 和 multipart/form-data的区别及用法
- Python中merge,join,concat区别和用法介绍
- SQL中INNER、LEFT、RIGHT JOIN的区别和用法详解
- Day - 03
- 9 Top JavaScript Frameworks For Mobile App Development