addEventListener()方法将事件处理程序附加到指定的元素。

addEventListener()方法将事件处理程序附加到元素,而不覆盖现有的事件处理程序。

您可以向一个元素添加许多事件处理程序。您可以向一个元素添加许多相同类型的事件处理程序,即两个“单击”事件。

您可以将事件侦听器添加到任何DOM对象,而不仅仅是HTML元素。即window对象。

addEventListener()方法可以更容易地控制事件对冒泡的反应。

使用addEventListener()方法时,JavaScript与HTML标记分离,以提高可读性,

并允许您添加事件侦听器,即使您不控制HTML标记也是如此。

您可以使用removeEventListener()方法轻松删除事件侦听器。

语法:element.addEventListener(event, function, useCapture);
  • 第一个参数是事件的类型(如“ click”或“ mousedown”)。
  • 第二个参数是我们想要在事件发生时调用的函数。
  • 第三个参数是一个布尔值,指定是使用事件冒泡还是事件捕获。此参数是可选的。

请注意,您不要为事件使用“on”前缀; 用“ click”而不是“ onclick”。

document.getElementById("myBtn").addEventListener("click", displayDate);

向元素添加事件处理程序

当用户点击某个元素时提醒“Hello World!” :
element.addEventListener("click", function(){ alert("Hello World!"); });

您还可以在外部定义函数,然后把函数名当参数传:

element.addEventListener("click", myFunction);
function myFunction() {
alert ("Hello World!");
}

将许多事件处理程序添加到同一元素

addEventListener()方法允许您向同一元素添加许多事件,而不会覆盖现有事件
element.addEventListener("click", myFunction);
element.addEventListener("click", mySecondFunction); element.addEventListener("mouseover", myFunction);
element.addEventListener("mouseout", myThirdFunction);

将事件处理程序添加到window对象

addEventListener()方法允许您在任何HTML DOM对象上添加事件侦听器,例如HTML元素,HTML文档,window对象或支持事件的其他对象,
xmlHttpRequest对象。
添加在用户调整窗口大小时触发的事件侦听器:
window.addEventListener("resize", function(){
document.getElementById("demo").innerHTML = sometext;
});

传递参数值时,使用“匿名函数”,使用以下参数调用指定的函数:

element.addEventListener("click", function(){ myFunction(p1, p2); });

事件冒泡或事件捕获?

HTML DOM中有两种事件传播方式,即冒泡和捕获。
事件传播是一种在事件发生时定义元素顺序的方法。
如果<div>元素中有<p>元素,并且用户单击<p>元素,应该首先处理哪个元素的“click”事件?
在冒泡中,首先处理内部元素的事件,然后处理外部:首先处理<p>元素的click事件,然后处理<div>元素的click事件。
在捕获最外层元素时,首先处理事件然后处理内部:首先处理<div>元素的click事件,然后处理<p>元素的click事件。
使用addEventListener()方法,您可以使用“useCapture”参数指定传播类型:
默认值为false,将使用冒泡传播,当值设置为true时,事件使用捕获传播。
document.getElementById("myP").addEventListener("click", myFunction, true);
document.getElementById("myDiv").addEventListener("click", myFunction, true);

removeEventListener()方法

element.removeEventListener("mousemove", myFunction);

:该addEventListener()和removeEventListener()方法并不在IE 8和更早版本的支持。

但是,对于这些特定的浏览器版本,您可以使用attachEvent()方法将事件处理程序附加到元素,以及detachEvent()删除它的方法,解决方案

var x = document.getElementById("myBtn");
if (x.addEventListener) { // 对于所有主流浏览器,IE 8及更早版本除外
x.addEventListener("click", myFunction);
} else if (x.attachEvent) { // 适用于IE 8及更早版本
x.attachEvent("onclick", myFunction);
}

HTML DOM事件对象参考

 
 

JavaScript addEventListener()事件监听方法的更多相关文章

  1. JavaScript的事件监听、捕获和冒泡

    在前端开发中,我们经常需要对某些事件进行监听.这样只要在指定的元素上触发了该事件,就会执行一个回调函数来进行相关的操作. 而JavaScript中事件监听的方法总共有三种,分别如下: element. ...

  2. javascript的事件监听与捕获和冒泡

    在前端开发中,我们经常需要对某些事件进行监听.这样只要在指定的元素上触发了该事件,就会执行一个回调来进行相关的操作. 而js中事件监听方法总共有三种,分别如下所示: element.addEventL ...

  3. jquery 事件监听方法

    一.事件监听方法 mouseover()   鼠标移入事件方法 mouseout()    鼠标移出事件方法 mouseenter()  鼠标移入事件方法 mouseleave()  鼠标移出事件方法 ...

  4. javascript之事件监听

    addEventListener是一个监听事件并处理相应的函数,用于向指定元素添加事件句柄,可使用removeEventListener()方法来移除addEventListener()方法添加的事件 ...

  5. Android点击Button按钮的四种事件监听方法总结

    首先我们在activity_main.xml里面先定义一个Button空间 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <RelativeLayout xmlns:a ...

  6. 415 DOM 查找列表框、下拉菜单控件、对表格元素/表单控件进行增删改操作、创建元素并且复制节点与删除、 对表格操作、通用性和标准的事件监听方法(点击后弹窗效果以及去掉效果)

    DOM访问列表框.下拉菜单的常用属性: form.length.options.selectedindex.type       使用options[index]返回具体选项所对应的常用属性:defa ...

  7. addEventListener() 事件监听

    addEventListener() 用于向指定元素添加事件. 可以向一个元素添加多次事件或者多次不同事件,后面的事件是不会覆盖前面的. 语法: element.addEventListener(ev ...

  8. 前端基本知识(四):JS的异步模式:1、回调函数;2、事件监听;3、观察者模式;4、promise对象

    JavaScript语言将任务的执行模式可以分成两种:同步(Synchronous)和异步(Asychronous). “同步模式”就是一个任务完成之后,后边跟着一个任务接着执行:程序的执行顺序和排列 ...

  9. React.js 小书 Lesson9 - 事件监听

    作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson9 转载请注明出处,保留原文链接和作者信息. 在 React.js 里面监听事件是很容易的事情 ...

随机推荐

  1. iOS10 新特性一

    链接:http://www.jianshu.com/p/0cc7aad638d9 1.Notification(通知) 自从Notification被引入之后,苹果就不断的更新优化,但这些更新优化只是 ...

  2. 【jQuery】jQuery基础

    jQuery介绍 jQuery是一个轻量级JS库,使用十分简单: jQuery的核心是选择器,用于获取页面元素: jQuery提供了大量高效的方法,开发速度大幅提升: jQuery选择器 jQuery ...

  3. 【LeetCode】198. 打家劫舍

    打家劫舍 你是一个专业的小偷,计划偷窃沿街的房屋.每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警. 给定 ...

  4. Flask 异步化

    web网站包含前端和后端, 异步处理可以用在前端, 也可以用在后端.  前端 jquery 进行 ajax 请求时, 可设置 async 属性为 true, 并为 success 设置一个 callb ...

  5. Sublime打开txt文本乱码的解决方法

    Ctrl + Shift + P打开命令行 输入 install  ,先安装 Package Control 安装成功会提示你 现在你可以使用命令面板并键入“install package”开始 然后 ...

  6. 智能指针类模板(上)——STL中的智能指针

    智能指针类模板智能指针本质上就是一个对象,它可以像原生指针那样来使用. 智能指针的意义-现代C++开发库中最重要的类模板之一-C++中自动内存管理的主要手段-能够在很大程度上避开内存相关的问题 1.内 ...

  7. sudo apt-get 与 yum 常用命令

    yum -RedHat:CentOS... -xxx.rpmsudo apt-get  -Debian:Ubuntu...   -xxx.deb 安装工具rpm -ivh yum-2.0.4-1.rh ...

  8. QQ小程序开发与发布小教程

    QQ小程序QQApp,和微信小程序类似,可以直接在手机QQ中直接打开,应用内应用,省去了安装手机APP,非常方便.官方的介绍:QQ小程序为QQ体系下的应用开放平台,可为不同类型的产品提供框架,并在QQ ...

  9. QBXT模拟赛1

    总结 期望得分:\(100 + 80 + 10 = 190\) 实际得分:\(90 + 80 + 10 = 180\) 这是在清北的第一场考试,也是在清北考的最高的一次了吧..本来以为能拿\(190\ ...

  10. 数组去重--ES6方法

    数组去重方法1:用es6的set和...扩展运算符 let arr = [1,2,3,4,4,5,2]; console.log([...new Set(arr)]) // [1, 2, 3, 4, ...