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);

  • 相关阅读:
    JavaScript数组方法大全
    梁凤波工作周记3月10号
    JS解析联动JSON数据
    angularjs select 获取选中的值
    外部变量获取Ajax后台返回的参数值(success)
    ionic $ionicModal使用方法
    angularjs select ng-options延迟更新(联动)
    ionic使用iframe范围外部站点
    angularjs select 三级联动
    Ionic start 创建项目报错
  • 原文地址:https://www.cnblogs.com/DebbieBlog/p/5822990.html
Copyright © 2011-2022 走看看