JavaScript对HTML DOM使用EventListener进行操作


Posted in Javascript onOctober 21, 2015

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").
第二个参数是事件触发后调用的函数。
第三个参数是个布尔值用于描述事件是冒泡还是捕获。该参数是可选的。
Note 注意:不要使用 "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);

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

尝试一下 »

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

element.removeEventListener("mousemove", myFunction);

浏览器支持
表格中的数字表示支持该方法的第一个浏览器的版本号。
JavaScript对HTML DOM使用EventListener进行操作
注意: 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);
Javascript 相关文章推荐
Firefox outerHTML实现代码
Jun 04 Javascript
动态改变div的z-index属性的简单实例
Aug 08 Javascript
JS常用函数使用指南
Nov 23 Javascript
JS实现图片产生波纹一样flash效果的方法
Feb 27 Javascript
JavaScript模拟鼠标右键菜单效果
Dec 08 Javascript
jQuery实现背景弹性滚动的导航效果
Jun 01 Javascript
BootStrap中
Dec 10 Javascript
基于AGS JS开发自定义贴图图层
Mar 31 Javascript
JavaScript标准对象_动力节点Java学院整理
Jun 27 Javascript
微信小程序新闻网站详情页实例代码
Jan 10 Javascript
es6函数之尾递归用法实例分析
Apr 25 Javascript
Vue 组件注册全解析
Dec 17 Vue.js
JavaScript对象数组的排序处理方法
Oct 21 #Javascript
Javascript刷新窗口方法小结
Oct 21 #Javascript
JavaScript简单遍历DOM对象所有属性的实现方法
Oct 21 #Javascript
详解JavaScript操作HTML DOM的基本方式
Oct 21 #Javascript
JavaScript函数的调用以及参数传递
Oct 21 #Javascript
Java中Timer的用法详解
Oct 21 #Javascript
JS实现的竖向折叠菜单代码
Oct 21 #Javascript
You might like
PHP 分页类(模仿google)-面试题目解答
2009/09/13 PHP
php中导出数据到excel时数字变为科学计数的解决方法
2013/02/03 PHP
强烈声明: 不要使用(include/require)_once
2013/06/06 PHP
php启用zlib压缩文件的配置方法
2013/06/12 PHP
解析php做推送服务端实现ios消息推送
2013/07/01 PHP
PHP批量删除jQuery操作
2017/07/23 PHP
Laravel路由研究之domain解决多域名问题的方法示例
2019/04/04 PHP
使用js完成节点的增删改复制等的操作
2014/01/02 Javascript
JavaScript中switch语句的用法详解
2015/06/03 Javascript
详解JavaScript中常用的函数类型
2015/11/18 Javascript
jQuery绑定自定义事件的魔法升级版
2016/06/30 Javascript
微信小程序商城项目之淘宝分类入口(2)
2017/04/17 Javascript
深入理解React Native原生模块与JS模块通信的几种方式
2017/07/24 Javascript
原生JS+HTML5实现的可调节写字板功能示例
2018/08/30 Javascript
vue-cli项目使用mock数据的方法(借助express)
2019/04/15 Javascript
js脚本中执行java后台代码方法解析
2019/10/11 Javascript
Vue实现按钮级权限方案
2019/11/21 Javascript
Angular8 简单表单验证的实现示例
2020/06/03 Javascript
[01:14]DOTA2亚洲邀请赛 ShowOpen
2015/02/07 DOTA
[56:41]iG vs Winstrike 2018国际邀请赛小组赛BO2 第二场
2018/08/17 DOTA
Python连接PostgreSQL数据库的方法
2016/11/28 Python
Python使用Turtle模块绘制五星红旗代码示例
2017/12/11 Python
Python网络编程之TCP套接字简单用法示例
2018/04/09 Python
python实现Excel文件转换为TXT文件
2019/04/28 Python
Django 路由控制的实现
2019/07/17 Python
Pycharm 2020最新永久激活码(附最新激活码和插件)
2020/09/17 Python
python使用bs4爬取boss直聘静态页面
2020/10/10 Python
英国奢侈品概念店:Base Blu
2019/05/16 全球购物
水利公司纪检监察自我鉴定
2014/02/25 职场文书
《蒙娜丽莎之约》教学反思
2014/02/27 职场文书
党课培训主持词
2014/04/01 职场文书
社会体育专业大学生职业生涯规划书
2014/09/17 职场文书
2015年中学图书馆工作总结
2015/07/22 职场文书
Pytorch 如何实现LSTM时间序列预测
2021/05/17 Python
Python 绘制多因子柱状图
2022/05/11 Python
JS前端使用canvas实现扩展物体类和事件派发
2022/08/05 Javascript