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. 重启电脑 wamp图标是橙色(未变绿)

    记录一个错误: 修复系统漏洞后,重启电脑,wamp没有开机自启动,手动启动后发现,图标是大红色变成了橙色,也就是服务未完全启动(1/2)状态. ??? 但是我其实也不知道是哪个服务(Apache/My ...

  2. [Flink]测试用的fake温度传感器

    figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...

  3. win10 64位安装redis 及Redis Desktop Manager使用

    说多无益,先把redis在win上的开发环境搭一下. redis官方没有64位的Windows下的可执行程序,目前有个开源的托管在github上, 地址:https://github.com/Serv ...

  4. Java学习笔记(3)--- 内部类,基本数据类型

    1.内部类(nested classes): a.定义: 内部类其实就是一个类中还包含着另外一个类,如同一个人(外部类)是由大脑.肢体.器官等身体结果组成,而内部类相当于其中的某个器官之一,例如心脏: ...

  5. 软件工程基础团队第二次作业(团队项目-需求分析&系统设计)成绩汇总

    一.作业题目 团队第二次作业:需求分析&系统设计 二.具体要求 1.作业任务 任务一:组长组织项目组开展需求调研工作(可采取需求调查.问卷.分析已有软件.网上资料等方法).概要设计.详细设计. ...

  6. Java JDK 运行环境安装

    1 Windows系统 1.1 安装包准备 安装包本文档讲解为64位系统,如果是32位系统需要下载32位系统安装包 1.1.1 下载方式 打开jdk官方下载地址,该文档提供jdk版本为1.8 http ...

  7. python的gRPC示例

    参考URL: https://segmentfault.com/a/1190000015220713?utm_source=channel-hottest gRPC 是一个高性能.开源和通用的 RPC ...

  8. 24.Java基础_IDEA类快捷键_Alt+insert

    这个IDEA我真的爱了,Alt+insert可以定制生成类的各项基本方法 Alt+insert,会打开下面这个界面,选择需要的类方法,按回车 选择该方法下的参数设置,可以使用Ctrl+A全部选中 自动 ...

  9. Jmeter Question 之 ‘批量执行SQL语句’

    第一步: MySql数据库:jdbc:mysql://ip:3306/数据库名?useUnicode=true&characterEncoding=utf8&allowMultiQue ...

  10. day74_10_21 三大认证

    一.权限六表. 一般在django中,基于用户权限访问控制的认证是RBAC(Role-Based Access Control) 还有一些基于auth的认证规则. Django框架采用的是RBAC认证 ...