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 相关文章推荐
JavaScript日期类型的一些用法介绍
Mar 02 Javascript
JavaScript的instanceof运算符学习教程
Jun 08 Javascript
纯js和css完成贪吃蛇小游戏demo
Sep 01 Javascript
JS实现探测网站链接的方法【测试可用】
Nov 08 Javascript
JavaScript之cookie技术详解
Nov 18 Javascript
浅谈jquery的html方法里包含特殊字符的处理
Nov 30 Javascript
使用Javascript判断浏览器终端设备(PC、IOS(iphone)、Android)
Jan 04 Javascript
深入理解Angularjs中$http.post与$.post
May 19 Javascript
使用vue-aplayer插件时出现的问题的解决
Mar 02 Javascript
使用Vue自定义指令实现Select组件
May 24 Javascript
深入浅析golang zap 日志库使用(含文件切割、分级别存储和全局使用等)
Feb 19 Javascript
VsCode里的Vue模板的实现
Aug 12 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的文章管理系统(一)
2006/10/09 PHP
php线性表顺序存储实现代码(增删查改)
2012/02/16 PHP
PHP的加密方式及原理
2012/06/14 PHP
php Hex RGB颜色值互换的使用
2013/05/10 PHP
php中count获取多维数组长度的方法
2014/11/03 PHP
PHP实现的下载远程图片自定义函数分享
2015/01/28 PHP
php常用的工具开发整理
2019/09/26 PHP
javascript 年月日联动实现核心代码
2009/12/21 Javascript
在js(jquery)中获得文本框焦点和失去焦点的方法
2012/12/04 Javascript
script不刷新页面的联动前后代码
2013/09/18 Javascript
jQuery实现非常实用漂亮的select下拉菜单选择效果
2015/11/06 Javascript
Javascript数组Array方法解读
2016/03/13 Javascript
关于bootstrap日期转化,bootstrap-editable的简单使用,bootstrap-fileinput的使用详解
2017/05/12 Javascript
Angular2.js实现表单验证详解
2017/06/23 Javascript
使用原生js+canvas实现模拟心电图的实例
2017/09/20 Javascript
gulp安装以及打包合并的方法教程
2017/11/19 Javascript
vue定义全局变量和全局方法的方法示例
2018/08/01 Javascript
JS实现计算小于非负数n的素数的数量算法示例
2019/02/26 Javascript
vue中解决拖拽改变存在iframe的div大小时卡顿问题
2020/07/22 Javascript
使用Python从有道词典网页获取单词翻译
2016/07/03 Python
Python版名片管理系统
2018/11/30 Python
Python从单元素字典中获取key和value的实例
2018/12/31 Python
Python基于机器学习方法实现的电影推荐系统实例详解
2019/06/25 Python
python3中rank函数的用法
2019/11/27 Python
python连接打印机实现打印文档、图片、pdf文件等功能
2020/02/07 Python
Python数据可视化处理库PyEcharts柱状图,饼图,线性图,词云图常用实例详解
2020/02/10 Python
python 截取XML中bndbox的坐标中的图像,另存为jpg的实例
2020/03/10 Python
python如何利用paramiko执行服务器命令
2020/11/07 Python
python爬取抖音视频的实例分析
2021/01/19 Python
如何在发生故障的节点上重新安装 SQL Server
2013/03/14 面试题
网吧消防安全制度
2014/01/28 职场文书
会计自荐信范文
2014/03/09 职场文书
2014年国庆晚会主持词
2014/09/19 职场文书
2015感人爱情寄语
2015/02/26 职场文书
小学公民道德宣传日活动总结
2015/03/23 职场文书
电子表的操作介绍说明书
2019/10/28 职场文书