事件处理程序的两种方式:传统方式和现代方式

传统方式:

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

原文地址:https://www.cnblogs.com/DebbieBlog/p/5822990.html