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的js分页代码
Jun 10 Javascript
jquery下实现overlay遮罩层代码
Aug 25 Javascript
jquery插件制作 提示框插件实现代码
Aug 17 Javascript
Js实现滚动变色的文字效果
Jun 16 Javascript
angularjs客户端实现压缩图片文件并上传实例
Jul 06 Javascript
JavaScript实现向右伸出的多级网页菜单效果
Aug 25 Javascript
浅谈Javascript中Object与Function对象
Sep 26 Javascript
详细探究ES6之Proxy代理
Jul 22 Javascript
基于JavaScript实现焦点图轮播效果
Mar 27 Javascript
jquery tmpl模板(实例讲解)
Sep 02 jQuery
微信小程序实现bindtap等事件传参
Apr 08 Javascript
javascript中的offsetWidth、clientWidth、innerWidth及相关属性方法
May 14 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中通过curl模拟登陆discuz论坛的实现代码
2012/02/16 PHP
PHP has encountered a Stack overflow问题解决方法
2014/11/03 PHP
php读取csv数据保存到数组的方法
2015/01/03 PHP
php数据库的增删改查 php与javascript之间的交互
2017/08/31 PHP
js函数使用技巧之 setTimeout(function(){},0)
2009/02/09 Javascript
转换json格式的日期为Javascript对象的函数
2010/07/13 Javascript
javascript实现日历控件(年月日关闭按钮)
2012/12/12 Javascript
js中的eventType事件及其浏览器支持性介绍
2013/11/29 Javascript
jQuery在iframe中无法弹出对话框的解决方法
2014/01/12 Javascript
Javascript添加监听与删除监听用法详解
2014/12/19 Javascript
jQuery实现拖拽可编辑模块功能代码
2017/01/12 Javascript
Angular2使用Angular CLI快速搭建工程(一)
2017/05/21 Javascript
对存在JavaScript隐式类型转换的四种情况的总结(必看篇)
2017/08/31 Javascript
详解设置Webstorm 利用babel将ES6自动转码成ES5
2017/12/20 Javascript
Vue 动态组件components和v-once指令的实现
2019/08/30 Javascript
vue实现导航菜单和编辑文本的示例代码
2020/07/04 Javascript
[01:42]TI4西雅图DOTA2前线报道 第一顿早饭哦
2014/07/08 DOTA
Python转码问题的解决方法
2008/10/07 Python
python实现的一个火车票转让信息采集器
2014/07/09 Python
python通过pil将图片转换成黑白效果的方法
2015/03/16 Python
KMP算法精解及其Python版的代码示例
2016/06/01 Python
详解python之多进程和进程池(Processing库)
2017/06/09 Python
Django接收post前端返回的json格式数据代码实现
2019/07/31 Python
用python拟合等角螺线的实现示例
2019/12/27 Python
Linux下升级安装python3.8并配置pip及yum的教程
2020/01/02 Python
python 使用事件对象asyncio.Event来同步协程的操作
2020/05/04 Python
详解python的变量缓存机制
2021/01/24 Python
python实现计算图形面积
2021/02/22 Python
德国孕妇装和婴童服装网上商店:bellybutton
2018/04/12 全球购物
汽车检测与维修专业求职信
2013/10/30 职场文书
给护士表扬信
2014/01/19 职场文书
2015年打非治违工作总结
2015/04/02 职场文书
聚会通知怎么写
2015/04/23 职场文书
PHP判断是否是json字符串
2021/04/01 PHP
python入门之算法学习
2021/04/22 Python
一篇文章搞懂python混乱的切换操作与优雅的推导式
2021/08/23 Python