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 相关文章推荐
jQuery前台数据获取实现代码
Mar 16 Javascript
js跑步算法的实现代码
Dec 04 Javascript
jquery教程限制文本框只能输入数字和小数点示例分享
Jan 13 Javascript
JavaScript获取元素尺寸和大小操作总结
Feb 27 Javascript
基于jQuery实现仿淘宝套餐选择插件
Mar 04 Javascript
JavaScript中setter和getter方法介绍
Jul 11 Javascript
JS正则表达式验证账号、手机号、电话和邮箱是否合法
Mar 08 Javascript
js模仿微信朋友圈计算时间显示几天/几小时/几分钟/几秒之前
Apr 27 Javascript
深入浅析JavaScript中的RegExp对象
Sep 18 Javascript
vue使用axios实现文件上传进度的实时更新详解
Dec 20 Javascript
微信小程序block的使用教程
Apr 01 Javascript
jQuery 实现批量提交表格多行数据的方法
Aug 09 jQuery
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 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数
2012/04/09 PHP
PHP中使用TCPDF生成PDF文档实例
2014/07/01 PHP
Laravel 5框架学习之Eloquent 关系
2015/04/09 PHP
PHP abstract 抽象类定义与用法示例
2018/05/29 PHP
图片按比例缩放函数
2006/06/26 Javascript
TextArea设置MaxLength属性最大输入值的js代码
2012/12/21 Javascript
JS小功能(button选择颜色)简单实例
2013/11/29 Javascript
js动态往表格的td中添加图片并注册事件
2014/06/12 Javascript
Javascript中innerHTML用法实例分析
2015/01/12 Javascript
JS表格组件神器bootstrap table详解(强化版)
2016/05/26 Javascript
JQuery EasyUI Layout 在from布局自适应窗口大小的实现方法
2016/05/28 Javascript
PassWord输入框代码分享
2016/06/07 Javascript
jQuery+CSS实现简单切换菜单示例
2016/07/27 Javascript
canvas实现爱心和彩虹雨效果
2017/03/09 Javascript
BootStrap selectpicker后台动态绑定数据的方法
2017/07/28 Javascript
用JS编写一个函数,返回数组中重复出现过的元素(实例)
2017/09/14 Javascript
解决element UI 自定义传参的问题
2018/08/22 Javascript
VUE 解决mode为history页面为空白的问题
2019/11/01 Javascript
详解三种方式在React中解决绑定this的作用域问题并传参
2020/08/18 Javascript
[01:09:40]Newbee vs Pain 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python生成任意范围任意精度的随机数方法
2018/04/09 Python
python机器人运动范围问题的解答
2019/04/29 Python
浅谈django 模型类使用save()方法的好处与注意事项
2020/03/28 Python
深入了解Python装饰器的高级用法
2020/08/13 Python
matplotlib交互式数据光标实现(mplcursors)
2021/01/13 Python
CSS3实现文字波浪线效果示例代码
2016/11/20 HTML / CSS
解决HTML5中的audio在手机端和微信端的不能自动播放问题
2019/11/04 HTML / CSS
eBay德国站:eBay.de
2017/09/14 全球购物
新闻学专业个人求职信写作
2014/02/04 职场文书
男女朋友协议书
2014/04/23 职场文书
高中竞选班长演讲稿
2014/04/24 职场文书
竞赛口号大全
2014/06/16 职场文书
教师党的群众路线教育实践活动个人整改措施
2014/11/04 职场文书
酒店财务部岗位职责
2015/04/14 职场文书
二审答辩状范文
2015/05/22 职场文书
爱护公物主题班会
2015/08/17 职场文书