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

  • 相关阅读:
    python psutil监控系统资源【转】
    nc用法【转】
    python enumerate用法总结【转】
    find查找时排除目录及文件
    python自动安装mysql5.7【转】
    Nginx报错:upstream timed out (110: Connection timed out)和client intended to send too large body【转】
    linux压缩日志并删除原始文件
    mysql5.7主从复制--在线变更复制类型【转】
    MySQL 5.7在线设置复制过滤【转】
    Linux dd命令中dsync与fdatasync的区别【转】
  • 原文地址:https://www.cnblogs.com/DebbieBlog/p/5822990.html
Copyright © 2011-2022 走看看