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