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 相关文章推荐
JS获取scrollHeight问题想到的标准问题
May 27 Javascript
JavaScript获取GridView选择的行内容
Apr 14 Javascript
用javascript对一个json数组深度赋值示例
Jul 27 Javascript
js 动态修改css文件用到了cssRule
Aug 20 Javascript
Ajax局部更新导致JS事件重复触发问题的解决方法
Oct 14 Javascript
详解js中构造流程图的核心技术JsPlumb(2)
Dec 08 Javascript
使用Node.js给图片加水印的方法
Nov 15 Javascript
jQuery ajax读取本地json文件的实例
Oct 31 jQuery
jQuery+SpringMVC中的复选框选择与传值实例
Jan 08 jQuery
JS实现吸顶特效
Jan 08 Javascript
JavaScript前后端JSON使用方法教程
Nov 23 Javascript
比较node.js和Deno
Apr 27 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中使用xmlreader读取xml数据示例
2014/12/29 PHP
在win系统安装配置 Memcached for PHP 5.3 图文教程
2015/03/03 PHP
php header函数的常用http头设置
2015/06/25 PHP
PHP保留两位小数的几种方法
2019/07/24 PHP
laravel5表单唯一验证的实例代码
2019/09/30 PHP
Laravel框架下载,安装及路由操作图文详解
2019/12/04 PHP
PHP正则之正向预查与反向预查讲解与实例
2020/04/06 PHP
XRegExp 0.2: Now With Named Capture
2007/11/30 Javascript
页面版文本框智能提示JS代码
2009/11/20 Javascript
JQuery实现用户名无刷新验证的小例子
2013/03/22 Javascript
JS控件ASP.NET的treeview控件全选或者取消(示例代码)
2013/12/16 Javascript
javascript 数组操作详解
2015/01/29 Javascript
JS实现Select的option上下移动的方法
2016/03/01 Javascript
深入掌握 react的 setState的工作机制
2017/09/27 Javascript
解决Vue2.0 watch对象属性变化监听不到的问题
2018/09/11 Javascript
NodeJS服务器实现gzip压缩的示例代码
2018/10/12 NodeJs
微信小程序8种数据通信的方式小结
2020/02/03 Javascript
[01:42]辉夜杯战队访谈宣传片—FANTUAN
2015/12/25 DOTA
跟老齐学Python之大话题小函数(1)
2014/10/10 Python
Python实现的简单读写csv文件操作示例
2018/07/12 Python
python 产生token及token验证的方法
2018/12/26 Python
Django模型修改及数据迁移实现解析
2019/08/01 Python
python错误调试及单元文档测试过程解析
2019/12/19 Python
pytorch简介
2020/11/11 Python
Python wordcloud库安装方法总结
2020/12/31 Python
ziaja齐叶雅官方海外旗舰店:来自波兰的天然护肤品牌
2017/01/02 全球购物
美国半成品食材配送服务商:Home Chef
2018/01/25 全球购物
西海岸男士和男童服装:Johnnie-O
2018/03/15 全球购物
Urban Outfitters德国官网:美国跨国生活方式零售公司
2018/05/21 全球购物
vue 中 get / delete 传递数组参数方法
2021/03/23 Vue.js
医学生自荐信
2013/12/03 职场文书
开业庆典策划方案
2014/02/18 职场文书
师恩难忘教学反思
2014/04/27 职场文书
导游词400字
2015/02/13 职场文书
创业计划书之美容店
2019/09/16 职场文书
作文之亲情600字
2019/09/23 职场文书