Javascript事件注册机制

Javascript的几种事件注册机制

1.直接绑定在元素上。这样的缺点是结构和行为没有分离,不符合w3c的标准。优点是,写着方便(但是多了就不方便了)。

1 <p id="para" title="cssrain demo!" onclick="test()" >test</p>
2 <script>
3 function test(){
4 alert("test");
5 }
6 </script> 

2.结构和行为分离

1 <p id="para" title="cssrain demo!">test</p>
2 <script>
3 function test(){
4 alert("test");
5 }
6 window.onload = function(){
7 document.getElementById("para").onclick = test;
8 }
9 </script> 

3.给一个元素绑定多个事件

 1 <p id="para" title="cssrain demo!">test</p> 
 2 <script> 
 3 function test(){ 
 4 alert("test"); 
 5 } 
 6 
 7 function pig(){ 
 8 alert("pig"); 
 9 } 
10 
11 window.onload = function(){ 
12 document.getElementById("para").onclick = test; 
13 document.getElementById("para").onclick = pig; 
14 } 
15 </script> 

如果按照上面的写法,我们只能输出第二个函数。 这时候我们需要用到attachEvent方法:

 1 <p id="para" title="cssrain demo!">test</p> 
 2 <script> 
 3 function test(){ 
 4 alert("test"); 
 5 } 
 6 
 7 function pig(){ 
 8 alert("pig"); 
 9 } 
10 
11 window.onload = function(){ 
12 document.getElementById("para").attachEvent("onclick",test); 
13 document.getElementById("para").attachEvent("onclick",pig); 
14 } 
15 </script> 

兼容firefox

 1 <p id="para" title="cssrain demo!">test</p> 
 2 <script> 
 3 function test(){ 
 4 alert("test"); 
 5 } 
 6 
 7 function pig(){ 
 8 alert("pig"); 
 9 } 
10 
11 window.onload = function(){ 
12 var element = document.getElementById("para"); 
13 if(element.addEventListener){ // firefox , w3c 
14 element.addEventListener("click",test,false); 
15 element.addEventListener("click",pig,false); 
16 } else { // ie 
17 element.attachEvent("onclick",test); 
18 element.attachEvent("onclick",pig); 
19 } 
20 } 
21 </script> 

js事件注册的相关文章:

http://blog.csdn.net/lynnlin1122/article/details/3477818

原文地址:https://www.cnblogs.com/snowinmay/p/2976609.html