zoukankan      html  css  js  c++  java
  • 事件处理程序的两种方式:传统方式和现代方式

    传统方式:

     1.html中直接添加事件处理程序

     2.js中添加on属性(把一个函数赋值给一个事件处理程序的属性)

         ex:   var btn=document.getElementById("sumbitBtn")

                  btn.onclick=showBtn;

      删除事件:btn.onclik=null

    总结:传统方式的优点:浏览器的兼容性比较好。

             缺点:html和js代码耦合在一起,不利于修改和维护。传统方式不能添加多个事件,而且后面的事件处理程序会覆盖前面的。


    现代方式:

     添加事件监听(dom方式:在IE中不兼容):addEventListener() 和 removeEventListener()

     有三个参数:事件名称(不带on),事件处理程序,boolean值(true:事件捕获方式,false:事件冒泡方式)    添加多个事件不会被覆盖

     ex:       添加    btn.addEventListener('click',sayHi,false);

                 移除   btn.removeEventListener('click',sayHi,false);

     IE兼容的事件处理程序:attachEvent() 和 detachEvent()

     有两个参数:事件名称(不许带上on),事件处理程序       (在IE中只支持事件冒泡)

     ex:       添加   btn.attachEvent('onclick',sayHi)

                   移除  btn.detachEvent('onclick',sayHi)

     总结:现代方式优点:可以添加多个事件处理程序而不被后面的事件处理程序覆盖

              缺点:兼容性没有传统方式那么好,要专门为考虑兼容性再写一遍。


    所以 有了兼容性写法。。。。。。。。。。。。。

    function addEvent(type,handler,element)

    {

         if(element.attachEvent)

            {

                element.attachEvent('on'+type,handler);

            }else

            {

               element.addEventListener(type,handler,false)

            }

    }

     调用:addEvent('click',sayHi,btn);

  • 相关阅读:
    PAT (Advanced Level) 1114. Family Property (25)
    PAT (Advanced Level) 1113. Integer Set Partition (25)
    PAT (Advanced Level) 1112. Stucked Keyboard (20)
    PAT (Advanced Level) 1111. Online Map (30)
    PAT (Advanced Level) 1110. Complete Binary Tree (25)
    PAT (Advanced Level) 1109. Group Photo (25)
    PAT (Advanced Level) 1108. Finding Average (20)
    PAT (Advanced Level) 1107. Social Clusters (30)
    PAT (Advanced Level) 1106. Lowest Price in Supply Chain (25)
    PAT (Advanced Level) 1105. Spiral Matrix (25)
  • 原文地址:https://www.cnblogs.com/DebbieBlog/p/5822990.html
Copyright © 2011-2022 走看看