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 相关文章推荐
CSS和Javascript简单复习资料
Jun 29 Javascript
javascript弹出层输入框(示例代码)
Dec 11 Javascript
JQuery异步加载无限下拉框级联功能实现示例
Feb 19 Javascript
教你用AngularJS框架一行JS代码实现控件验证效果
Jun 23 Javascript
jQuery表单域属性过滤器用法分析
Feb 10 Javascript
在Ubuntu系统上安装Ghost博客平台的教程
Jun 17 Javascript
扩展jquery easyui tree的搜索树节点方法(推荐)
Oct 28 Javascript
Vue 组件(component)教程之实现精美的日历方法示例
Jan 08 Javascript
JavaScript简单实现关键字文本搜索高亮显示功能示例
Jul 25 Javascript
学习jQuery中的noConflict()用法
Sep 28 jQuery
JS前端广告拦截实现原理解析
Feb 17 Javascript
springboot+vue实现文件上传下载
Nov 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
百事可乐也出咖啡了 双倍咖啡因双倍快乐
2021/03/03 咖啡文化
从一个不错的留言本弄的mysql数据库操作类
2007/09/02 PHP
PHP实现对站点内容外部链接的过滤方法
2014/09/10 PHP
php生成QRcode实例
2014/09/22 PHP
jQuery Mobile + PHP实现文件上传
2014/12/12 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
2020/02/27 PHP
基于jQuery的星级评分插件
2011/08/12 Javascript
JavaScript实现函数返回多个值的方法
2015/06/09 Javascript
AngularJS中实现用户访问的身份认证和表单验证功能
2016/04/21 Javascript
tablesorter.js表格排序使用方法(支持中文排序)
2017/02/10 Javascript
js实现短信发送倒计时功能(正则验证)
2017/02/10 Javascript
浅谈Vue.js中ref ($refs)用法举例总结
2017/12/19 Javascript
vue如何通过id从列表页跳转到对应的详情页
2018/05/01 Javascript
jquery实现的简单轮播图功能【适合新手】
2018/08/17 jQuery
js仿京东放大镜效果
2020/08/09 Javascript
[02:43]2018DOTA2亚洲邀请赛主赛事首日TOP5
2018/04/04 DOTA
[03:12]完美世界DOTA2联赛PWL DAY6集锦
2020/11/05 DOTA
Python使用Redis实现作业调度系统(超简单)
2016/03/22 Python
python事件驱动event实现详解
2018/11/21 Python
Python日期时间Time模块实例详解
2019/04/15 Python
python的turtle库使用详解
2019/05/10 Python
利用python计算时间差(返回天数)
2019/09/07 Python
配置python的编程环境之Anaconda + VSCode的教程
2020/03/29 Python
ubuntu16.04升级Python3.5到Python3.7的方法步骤
2020/08/20 Python
使用Python画了一棵圣诞树的实例代码
2020/11/27 Python
Nike台湾官方商店:Nike.com (TW)
2017/08/16 全球购物
TripAdvisor越南:全球领先的旅游网站
2017/09/21 全球购物
Zatchels官网:英国剑桥包品牌
2021/01/12 全球购物
2019史上最全Database工程师题库
2015/12/06 面试题
亿阳信通股份有限公司笔试题(C#)
2016/03/04 面试题
元宵晚会主持词
2014/03/25 职场文书
解除合同协议书
2014/04/17 职场文书
心理咨询承诺书
2014/05/20 职场文书
2015年仓库管理工作总结
2015/05/25 职场文书
任长霞观后感
2015/06/16 职场文书
环保建议书作文500字
2015/09/14 职场文书