zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    node.js ---path模块
    es6箭头函数this问题
    Codeforces Round #576 (Div. 2) | CF1199 补题
    Hungary
    CF 1196D2 RGB Substring (hard version) --- 前缀和 + 思维
    康托展开
    POJ1821 Fence --- 单调队列 + DP
    素数筛
    自动化接口面试遇到的问题
    linux遇到的面试问题
  • 原文地址:https://www.cnblogs.com/snowinmay/p/2976609.html
Copyright © 2011-2022 走看看