当前位置: 首页 > news >正文

HTML DOM 事件监听器

通过JavaScript,我们可以给页面的某些元素添加事件的监听器,当元素触发相应事件的时候监听器就会捕捉到这个事件并执行相应的代码。

addEventListener() 方法

实例

当用户点击按钮时触发监听事件:

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

尝试一下 »

addEventListener() 方法用于向指定元素添加事件句柄。

addEventListener() 方法添加的事件句柄不会覆盖已存在的事件句柄。

你可以向一个元素添加多个事件句柄。

你可以向同个元素添加多个同类型的事件句柄,如:两个 "click" 事件。

你可以向任何 DOM 对象添加事件监听,不仅仅是 HTML 元素。如: window 对象。

addEventListener() 方法可以更简单的控制事件(冒泡与捕获)。

当你使用 addEventListener() 方法时, JavaScript 从 HTML 标记中分离开来,可读性更强, 在没有控制HTML标记时也可以添加事件监听。

你可以使用 removeEventListener() 方法来移除事件的监听。


语法

 element.addEventListener(event, function, useCapture);

第一个参数是事件的类型 (如 "click" 或 "mousedown").

第二个参数是事件触发后调用的函数。

第三个参数是个布尔值用于描述事件是冒泡还是捕获。该参数是可选的。

注意:不要使用 "on" 前缀。 例如,使用 "click" ,而不是使用 "onclick"。


向原元素添加事件句柄

实例

当用户点击元素时弹出 "Hello World!" :

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

尝试一下 »

你可以使用函数名,来引用外部函数:

实例

当用户点击元素时弹出 "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("click", mySecondFunction);

element.addEventListener("mouseout", myThirdFunction);

尝试一下 »

提示:你可以在本站的 HTML DOM addEventListener() 方法部分获得更多有关addEventListener()方法的信息!


向 Window 对象添加事件句柄

addEventListener() 方法允许你在 HTML DOM 对象添加事件监听, HTML DOM 对象如: HTML 元素, HTML 文档, window 对象。或者其他支出的事件对象如: xmlHttpRequest 对象。

实例

当用户重置窗口大小时添加事件监听:

window.addEventListener("resize", function(){

document.getElementById("demo").innerHTML = sometext;

});

尝试一下 »


传递参数

当传递参数值时,使用"匿名函数"调用带参数的函数:

实例

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

尝试一下 »


事件冒泡或事件捕获?

事件传递有两种方式:冒泡与捕获。

事件传递定义了元素事件触发的顺序。 如果你将 <p> 元素插入到 <div> 元素中,用户点击 <p> 元素, 哪个元素的 "click" 事件先被触发呢?

在冒泡中,内部元素的事件会先被触发,然后再触发外部元素,即: <p> 元素的点击事件先触发,然后会触发 <div> 元素的点击事件。

在捕获中,外部元素的事件会先被触发,然后才会触发内部元素的事件,即: <div> 元素的点击事件先触发 ,然后再触发 <p> 元素的点击事件。

addEventListener() 方法可以指定 "useCapture" 参数来设置传递类型:

addEventListener(event, function, useCapture);

默认值为 false, 即冒泡传递,当值为 true 时, 事件使用捕获传递。

实例

document.getElementById("myDiv").addEventListener("click", myFunction, true);

尝试一下 »

提示:DOM事件流同时支持两种事件模型:捕获型事件和冒泡型事件,捕获型事件首先发生。捕获型事件和冒泡型事件会触及DOM中的所有对象,从document对象开始,也在document对象结束。


removeEventListener() 方法

removeEventListener() 方法移除由 addEventListener() 方法添加的事件句柄:

实例

element.removeEventListener("mousemove", myFunction);

尝试一下 »


浏览器支持

表格中的数字表示支持该方法的第一个浏览器的版本号。

方法

addEventListener()

1.0

9.0

1.0

1.0

7.0

removeEventListener()

1.0

9.0

1.0

1.0

7.0

注意: IE 8 及更早 IE 版本,Opera 7.0及其更早版本不支持 addEventListener() 和 removeEventListener() 方法。但是,对于这类浏览器版本可以使用 detachEvent() 方法来移除事件句柄:

element.attachEvent(event, function);
element.detachEvent(event, function);

实例

跨浏览器解决方法:

var x = document.getElementById("myBtn");

if (x.addEventListener) { // 所有主流浏览器,除了 IE 8 及更早版本

x.addEventListener("click", myFunction);

} else if (x.attachEvent) { // IE 8 及更早版本

x.attachEvent("onclick", myFunction);

}

尝试一下 »


http://www.lryc.cn/news/32450.html

相关文章:

  • java基本数据类型取值范围
  • maven的安装配置
  • 【转载】System Verilog 上下文context的含义以及设置导入函数的作用域
  • redis数据类型
  • 【独家】华为OD机试 - 最多获得的短信条数(C 语言解题)
  • 【剧前爆米花--爪哇岛寻宝】包装类的装拆箱和泛型的擦除机制
  • BufferQueue研究
  • 【计组笔记08】计算机组成与原理之IO设备系统(输入、输出设备、外存储器)
  • 使用Vue实现数据可视化大屏功能(一)
  • 华为OD机试真题Python实现【整数对最小和】真题+解题思路+代码(20222023)
  • 2023年绿色建筑国际会议(ICoGB 2023)
  • 【力扣1653】使字符串平衡的最少删除次数
  • 链表的中间结点与链表的倒数第k个结点(精美图示详解哦)
  • 防静电监控仪可以检测现场设备是否和实际大地接触
  • 计算机网络第八版——第二章课后题答案(超详细)
  • 2023年3月全国DAMA-CDGA/CDGP数据管理认证火热报名中...
  • 查询与进程调度(CFS)相关信息
  • 07对MVC的理解
  • WebSocket与Socket、TCP、HTTP的关系
  • 音频基础知识简述 esp-sr 上手指南
  • Flex弹性布局一文通【最全Flex教学】
  • Navicat使用教程
  • 35岁测试人该何去何从?10年工作经验的我,只不过是一年的工作经验用了10年......
  • SpringBoot 项目中集成 Prometheus 和 Grafana
  • 红队APT——反朔源流量加密CSMSF证书指纹C2项目CDN域前置
  • Linux环境下实现并详细分析c/cpp线程池(附源码)
  • 移动web(三)
  • macbook怎么运行exe文件 mac打开exe文件的三大方法
  • GoldenGate(OGG)高可用XAG部署
  • 如何使用Docker容器部署O2OA(翱途)开发平台与OnlyOffice的集成版本?