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 相关文章推荐
一组JS创建和操作表格的函数集合
May 07 Javascript
JavaScript Chart 插件整理
Jun 18 Javascript
JavaScript中使用arguments获得函数传参个数实例
Aug 27 Javascript
jQuery插件jFade实现鼠标经过的图片高亮其它变暗
Mar 14 Javascript
js实现获取当前时间是本月第几周的方法
Aug 11 Javascript
快速解决jquery.touchSwipe左右滑动和垂直滚动条冲突
Apr 15 Javascript
JS针对浏览器窗口关闭事件的监听方法集锦
Jun 24 Javascript
vue.js单页面应用实例的简单实现
Apr 10 Javascript
jQuery实现广告条滚动效果
Aug 22 jQuery
JS兼容所有浏览器的DOMContentLoaded事件
Jan 12 Javascript
详解Vue项目编译后部署在非网站根目录的解决方案
Apr 26 Javascript
js实现磁性吸附的示例
Oct 26 Javascript
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
《逃离塔科夫》——“萌新劝退,老手自嗨”的硬核FPS游戏
2020/04/03 其他游戏
造就帕卡马拉的帕卡斯是怎么被发现的
2021/03/03 咖啡文化
php不写闭合标签的好处
2014/03/04 PHP
php使用正则过滤js脚本代码实例
2014/05/10 PHP
PHP中使用json数据格式定义字面量对象的方法
2014/08/20 PHP
php实现基于pdo的事务处理方法示例
2017/07/21 PHP
PHP+Redis 消息队列 实现高并发下注册人数统计的实例
2018/01/29 PHP
PHP实现正则表达式分组捕获操作示例
2018/02/03 PHP
如何用javascript判断录入的日期是否合法
2007/01/08 Javascript
判断脚本加载是否完成的方法
2009/05/26 Javascript
利用js实现选项卡的特别效果的实例
2013/03/03 Javascript
jquery的ajax请求全面了解
2013/03/20 Javascript
学习JavaScript编程语言的8张思维导图分享
2015/03/27 Javascript
JavaScript更改字符串的大小写
2015/05/07 Javascript
基于jquery实现复选框全选,反选,全不选等功能
2015/10/16 Javascript
JS动态计算移动端rem的解决方案
2016/10/14 Javascript
JS调用某段SQL语句的方法
2016/10/20 Javascript
详解微信JS-SDK选择图片遇到的坑
2018/08/15 Javascript
js实现指定时间倒计时效果
2019/08/26 Javascript
环形加载进度条封装(Vue插件版和原生js版)
2019/12/04 Javascript
原生JS实现九宫格抽奖
2020/09/13 Javascript
jquery自定义组件实例详解
2020/12/31 jQuery
[01:04:32]DOTA2-DPC中国联赛 正赛 Aster vs LBZS BO3 第二场 2月23日
2021/03/11 DOTA
为什么选择python编程语言入门黑客攻防 给你几个理由!
2018/02/02 Python
完美解决Python matplotlib绘图时汉字显示不正常的问题
2019/01/29 Python
Python基于pandas爬取网页表格数据
2020/05/11 Python
python通过函数名调用函数的几种场景
2020/09/23 Python
宝拉珍选官方旗舰店:2%水杨酸精华液,收缩毛孔粗大和祛痘
2018/07/01 全球购物
NFL加拿大官方网上商店:NHLShop.ca
2019/03/12 全球购物
Club Monaco加拿大官网:设计师男女服装
2019/09/29 全球购物
物流管理专业毕业生自荐信
2014/03/04 职场文书
婚庆司仪主持词
2014/03/15 职场文书
2015年大学教师工作总结
2015/05/20 职场文书
入党介绍人意见2015
2015/06/01 职场文书
宣传部部长竞选稿
2015/11/21 职场文书
Mysql实现主从配置和多主多从配置
2021/06/02 MySQL