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 相关文章推荐
A标签中通过href和onclick传递的this对象实现思路
Apr 19 Javascript
一个字符串反转函数可实现字符串倒序
Sep 15 Javascript
jQuery学习笔记之Ajax用法实例详解
Dec 01 Javascript
javascript中获取class的简单实现
Jul 12 Javascript
JS基于递归实现倒计时效果的方法
Nov 26 Javascript
JS正则子匹配实例分析
Dec 22 Javascript
Vue应用部署到服务器的正确方式
Jul 15 Javascript
浅谈Node异步编程的机制
Oct 18 Javascript
用jquery获取select标签中选中的option值及文本的示例
Jan 25 jQuery
Vue导出页面为PDF格式的实现思路
Jul 31 Javascript
vue component 中引入less文件报错 Module build failed
Apr 17 Javascript
javascript实现的字符串转换成数组操作示例
Jun 13 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
用PHP连接MySQL代码的参数说明
2008/06/07 PHP
保存到桌面、设为桌面且带图标的PHP代码
2013/11/19 PHP
PHP实现检测客户端是否使用代理服务器及其匿名级别
2015/01/07 PHP
php实现面包屑导航例子分享
2015/12/19 PHP
全新Mac配置PHP开发环境教程
2016/02/03 PHP
PHP使用strrev翻转中文乱码问题的解决方法
2017/01/13 PHP
Yii框架布局文件的动态切换操作示例
2019/11/11 PHP
iframe 父窗口和子窗口相互的调用方法集锦
2010/12/15 Javascript
JQuery1.6 使用方法三
2011/11/23 Javascript
JavaScript中json对象和string对象之间相互转化
2012/12/26 Javascript
浅析tr的隐藏和显示问题
2014/03/05 Javascript
Js实现网页键盘控制翻页的方法
2014/10/30 Javascript
详解AngularJS中的filter过滤器用法
2016/01/04 Javascript
jQuery中Ajax全局事件引用方式及各个事件(全局/局部)执行顺序
2016/06/02 Javascript
JS获取及验证开始结束日期的方法
2016/08/20 Javascript
bootstrap模态框垂直居中效果
2016/12/03 Javascript
浅谈javascript中的 “ &amp;&amp; ” 和 “ || ”
2017/02/02 Javascript
jQuery中的on与bind绑定事件区别实例详解
2017/02/28 Javascript
node.js中http模块和url模块的简单介绍
2017/10/06 Javascript
使用wxapp-img-loader自定义组件实现微信小程序图片预加载功能
2018/10/18 Javascript
Node.js Domain 模块实例详解
2020/03/18 Javascript
[59:48]DOTA2-DPC中国联赛 正赛 VG vs Magma BO3 第一场 1月26日
2021/03/11 DOTA
python导出hive数据表的schema实例代码
2018/01/22 Python
Django视图和URL配置详解
2018/01/31 Python
对django中render()与render_to_response()的区别详解
2018/10/16 Python
Python实现多属性排序的方法
2018/12/05 Python
Django单元测试工具test client使用详解
2019/08/02 Python
全面总结使用CSS实现水平垂直居中效果的方法
2016/03/10 HTML / CSS
土耳其家居建材网站:Koçtaş
2016/11/22 全球购物
澳洲女装时尚在线:Blue Bungalow
2018/05/05 全球购物
德国隐形眼镜店:LuckyLens
2018/07/29 全球购物
土木工程专业个人求职信
2013/12/30 职场文书
公司自我介绍演讲稿
2014/08/21 职场文书
收款授权委托书
2014/10/02 职场文书
实战Python爬虫爬取酷我音乐
2022/04/11 Python
分享node.js实现简单登录注册的具体代码
2022/04/26 NodeJs