事件监听事件代理

DOM0 事件和DOM2级在事件监听使用方式上有什么区别?

Dom0中的事件处理函数
DOM0中通过on开头加上事件,click事件的事件处理程序就是onclick,load事件的事件处理程序就是onload
后添加的事件处理程序会覆盖掉之前添加的处理程序,只能有一个是有效的;DOM0级以属性赋值的方式绑定事件程序;

  1. html中绑定事件
<input id='myBtn' type="button" value="这是个按钮 "onclick="showMessage()" />
  1. 对应的程序
function showMessage(){
 console.log(this.id);
}
//还有一种方法,获取对应的DOM,绑定属性值
var btn=document.getElementById("myBtn");
btn.onclick=function(){
 console.log(this.id);
}
  1. 取消事件
    DOM0级事件处理程序可以认为是元素的方法。删除DOM0级事件处理程序,将相应属性值设置为null即可。
btn.onclick=null;

缺点:1.HTML与JavaScript代码紧密耦合,对代码修改和维护都造成了不便。2.如果一个事件绑定多个程序,后面的程序会覆盖前面的程序

DOM2的事件监听
DOM2中通过addEventListener()添加事件监听,通过removeEventListener()来移除事件监听

var btn=document.quertSelector(".mybtn")
btn.addEventListener('click',showMessage,false)
btn.removeEventListener('click',showMessage,false)

实现了js和html分离,也可以绑定多个元素

btn.addEventListener('click',showMessage,false)
btn.addEventListener('click',showMessage2,false)
btn.addEventListener('click',showMessage3,false)

attachEvent与addEventListener的区别?

低版本的IE不支持addEventListener()事件监听,它通过attachEvent()来实现事件的监听

  1. 参数的区别 addEventListener()接受三个参数(事件类型,事件方法,布尔值{如果是true则是在捕获阶段调用事件方法,如果是false则是在事件冒泡阶段处理}),attachEvent()接受二个参数(事件类型,事件方法)

  2. 第一个参数的值不同 addEventListener()的第一个值参数是事件类型(click,load),attachEvent()则是事件处理函数名称(onclick,onload)

  3. 事件处理程序的作用域的不同 addEventListener的作用域是元素本身,this是指的触发元素,而attachEvent事件处理程序会在全局变量内运行,所以this是window

  4. 为一个事件添加多个事件处理程序时,执行顺序不同 addEventListener会从上到下的依次执行,而attachEvent当事件监听多的时候,是没有规律的执行

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 题目1: DOM0 事件和DOM2级在事件监听使用方式上有什么区别? DOM0级事件,添加多个事件处理程序时, 会...
    饥人谷_林嘉俊阅读 2,350评论 0 0
  • 声明:本文来源于http://www.webzsky.com/?p=731我只是在这里作为自己的学习笔记整理一下(...
    angryyan阅读 11,943评论 1 6
  • 一、问答 1. dom对象的innerText和innerHTML有什么区别? innerHTML: 也就是从对象...
    饥人谷_罗伟恩阅读 3,823评论 0 2
  • 题目1: DOM0 事件和DOM2级在事件监听使用方式上有什么区别? Dom0级Dom0级事件处理程序是将一个函数...
    QQQQQCY阅读 2,523评论 0 0
  • 1.DOM0 事件和DOM2级在事件监听使用方式上有什么区别? DOM0级事件在DOM0级事件处理程序,事件名以'...
    24_Magic阅读 1,930评论 0 0