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

  • 相关阅读:
    zoj 3135 Party of 8g 最大点权独立集
    hdu 5352 MZL's City 最小费用最大流
    hdu 5351 MZL's Border 打表+高精度
    poj 3155 Hard Life 最大密度子图
    希尔排序的温习
    折半查找法的温习
    几所可能去的院校之对比与抉择
    重温排序算法
    5-17 汉诺塔的非递归实现 (25分)
    c语言从文件中读取数据作为输入
  • 原文地址:https://www.cnblogs.com/DebbieBlog/p/5822990.html
Copyright © 2011-2022 走看看