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 相关文章推荐
IE和Firefox在JavaScript应用中的兼容性探讨
Apr 01 Javascript
jquery maxlength使用说明
Sep 09 Javascript
javascript的数据类型、字面量、变量介绍
May 23 Javascript
Perl Substr()函数及函数的应用
Dec 16 Javascript
jQuery头像裁剪工具jcrop用法实例(附演示与demo源码下载)
Jan 22 Javascript
javascript学习指南之回调问题
Apr 23 Javascript
简单封装js的dom查询实例代码
Jul 08 Javascript
jQuery联动日历的实例解析
Dec 02 Javascript
js 监控iframe URL的变化实例代码
Jul 12 Javascript
vuex的简单使用教程
Feb 02 Javascript
vue用递归组件写树形控件的实例代码
Jul 19 Javascript
js获取对象,数组所有属性键值(key)和对应值(value)的方法示例
Jun 19 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发送有附件的电子邮件-(PHPMailer使用的实例分析)
2013/04/26 PHP
Smarty foreach控制循环次数的实现详解
2013/07/03 PHP
PHP仿博客园 个人博客(1) 数据库与界面设计
2013/07/05 PHP
php生成短网址示例
2014/05/05 PHP
PHP生成条形图的方法
2014/12/10 PHP
PHP获取当前完整URL地址的函数
2014/12/21 PHP
PHP数据库连接mysql与mysqli对比分析
2016/01/04 PHP
JS提交并解析后台返回的XML的代码
2008/11/03 Javascript
Span元素的width属性无效果原因及解决方案
2010/01/15 Javascript
使用 TypeScript 重新编写的 JavaScript 坦克大战游戏代码
2015/04/07 Javascript
纯js实现仿QQ邮箱弹出确认框
2015/04/29 Javascript
JavaScript中iframe实现局部刷新的几种方法汇总
2016/01/06 Javascript
Google Maps基础及实例解析
2016/08/06 Javascript
JavaScript定义数组的三种方法(new Array(),new Array('x','y')
2016/10/04 Javascript
浅谈JavaScript的自动垃圾收集机制
2016/12/15 Javascript
angular bootstrap timepicker TypeError提示怎么办
2017/06/13 Javascript
JS原生带小白点轮播图实例讲解
2017/07/22 Javascript
vue中实现左右联动的效果
2018/06/22 Javascript
JavaScript基础教程之如何实现一个简单的promise
2018/09/11 Javascript
jQuery实现form表单基于ajax无刷新提交方法实例代码
2019/11/04 jQuery
如何在微信小程序中存setStorage
2019/12/13 Javascript
[45:17]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第三场 1月9日
2021/03/11 DOTA
python使用Image处理图片常用技巧分析
2015/06/01 Python
Python实现字符型图片验证码识别完整过程详解
2019/05/10 Python
Python中的引用和拷贝实例解析
2019/11/14 Python
在Python中通过threshold创建mask方式
2020/02/19 Python
解决Python安装cryptography报错问题
2020/09/03 Python
基于CSS3的CSS 多栏(Multi-column)实现瀑布流源码分享
2014/06/11 HTML / CSS
设计师家具购买和委托在线市场:Viyet
2016/11/16 全球购物
数据库的约束含义
2012/09/09 面试题
简历中个人自我评价范文
2013/12/26 职场文书
担保书怎么写
2014/04/01 职场文书
优秀学生评语大全
2014/04/25 职场文书
会计演讲稿范文
2014/05/23 职场文书
毕业生找工作求职信
2014/08/05 职场文书
电影小兵张嘎观后感
2015/06/03 职场文书