js中addEventListener()与removeEventListener()用法案例分析


Posted in Javascript onMarch 02, 2020

本文实例讲述了js中addEventListener()与removeEventListener()用法。分享给大家供大家参考,具体如下:

所有的DOM节点中都包含addEventListener()与removeEventListener()这两种方法,用于追加事件和删除追加。

接受参数:要处理的事件名、作为事件处理程序的函数和一个布尔值。 (3个)

最后这个布尔值参数是true,表示在捕获阶段调用事件处理程序;如果是false,表示在冒泡阶段调用事件处理程序。默认为false;

事件传递有两种方式:冒泡与捕获。

事件传递定义了元素事件触发的顺序。 如果你将 <p> 元素插入到 <div> 元素中,用户点击 <p> 元素, 哪个元素的 "click" 事件先被触发呢?

冒泡 中,内部元素的事件会先被触发,然后再触发外部元素,即: <p> 元素的点击事件先触发,然后会触发 <div> 元素的点击事件。

捕获 中,外部元素的事件会先被触发,然后才会触发内部元素的事件,即: <div> 元素的点击事件先触发 ,然后再触发 <p> 元素的点击事件。

假如在一个按钮上添加一个点击事件,代码如下:

var btn = document.getElementById("myBtn");
btn.addEventListener("click", function () {
  alert(this.id);
}, false);

使用DOM2级方法添加事件处理程序的主要好处是可以添加多个事件处理程序。来看下面的例子:

var btn = document.getElementById("myBtn");
btn.addEventListener("click", function () {
  alert(this.id);
}, false);
btn.addEventListener("click", function () {
  alert("Hello World");
}, false);

通过addEventListener()添加的事件处理程序只能使用removeEventListener()来移除;移除时传入的参数与添加处理程序时使用的参数相同。通过addEventListener()添加的匿名函数无法移除,如下面的例子所示:

var btn = document.getElementById("myBtn");
btn.addEventListener("click", function () {
  alert(this.id);
}, false);
btn.removeEventListener("click", function () { //无效!
  alert(this.id);
}, false);

在这个例子中,removeEventListener无法删除addEventListener所追加的事件,因为两个方法并不相等,内存地址已经是不同的,如下面的例子所示:

var btn = document.getElementById("myBtn");
var handler = function () {
     alert(this.id);
   };
btn.addEventListener("click", handler, false);
btn.removeEventListener("click", handler, false); //有效!

案例:

<div id="myDIV"> div 元素添加了 onmousemove 事件句柄,鼠标在桔红色的框内移动时会显示随机数。
 <p>点击按钮移除 DIV 的事件句柄。</p>
 <button onclick="removeHandler()" id="myBtn">点我</button>
</div>
<p id="demo"></p>
<script>
document.getElementById("myDIV").addEventListener("mousemove", myFunction);
function myFunction() {
  document.getElementById("demo").innerHTML = Math.random();
}
function removeHandler() {
  document.getElementById("myDIV").removeEventListener("mousemove", myFunction);
}
</script>

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
通过JAVASCRIPT读取ASP设定的COOKIE
Nov 24 Javascript
用jquery ajax获取网站Alexa排名的代码
Dec 12 Javascript
javascript中this指向详解
Apr 23 Javascript
Three.js学习之Lamber材质和Phong材质
Aug 04 Javascript
JavaScript toUpperCase()方法使用详解
Aug 26 Javascript
jQuery中的insertBefore(),insertAfter(),after(),before()区别介绍
Sep 01 Javascript
微信小程序 获取当前地理位置和经纬度实例代码
Dec 05 Javascript
js中变量的连续赋值(实例讲解)
Jul 08 Javascript
js实现1,2,3,5数字按照概率生成
Sep 12 Javascript
详解微信小程序与内嵌网页交互实现支付功能
Oct 22 Javascript
微信小程序从注册账号到上架(图文详解)
Jul 17 Javascript
微信小程序页面调用自定义组件内的事件详解
Sep 12 Javascript
js构造函数constructor和原型prototype原理与用法实例分析
Mar 02 #Javascript
原生js实现日历效果
Mar 02 #Javascript
js中火星坐标、百度坐标、WGS84坐标转换实现方法示例
Mar 02 #Javascript
详解Vue中的Props与Data细微差别
Mar 02 #Javascript
微信小程序实现音频文件播放进度的实例代码
Mar 02 #Javascript
不刷新网页就能链接新的js文件方法总结
Mar 01 #Javascript
vue学习笔记之slot插槽用法实例分析
Feb 29 #Javascript
You might like
php重定向的三种方法分享
2012/02/22 PHP
php获取qq用户昵称和在线状态(实例分析)
2013/10/27 PHP
php中的filesystem文件系统函数介绍及使用示例
2014/02/13 PHP
如何阻止网站被恶意反向代理访问(防网站镜像)
2014/03/18 PHP
php中session与cookie的比较
2015/01/27 PHP
php设计模式之单例模式实例分析
2015/02/25 PHP
推荐20家国外的脚本下载网站
2011/04/28 Javascript
chrome下jq width()方法取值为0的解决方法
2014/05/26 Javascript
javascript实现在网页任意处点左键弹出隐藏菜单的方法
2015/05/13 Javascript
详解Wondows下Node.js使用MongoDB的环境配置
2016/03/01 Javascript
Angularjs 实现分页功能及示例代码
2016/09/14 Javascript
vue.js的安装方法
2017/05/12 Javascript
jQuery实现锚点向下平滑滚动特效示例
2017/08/29 jQuery
JS实现页面内跳转的简单代码
2017/09/03 Javascript
JS动态插入脚本和插入引用外部链接脚本的方法
2018/05/21 Javascript
浅谈React的最大亮点之虚拟DOM
2018/05/29 Javascript
Vue 中对图片地址进行拼接的方法
2018/09/03 Javascript
BootStrap模态框闪退问题实例代码详解
2018/12/10 Javascript
微信小程序搭建自己的Https服务器
2019/05/02 Javascript
vue集成一个支持图片缩放拖拽的富文本编辑器
2021/01/29 Vue.js
python设置检查点简单实现代码
2014/07/01 Python
Python迭代器和生成器介绍
2015/03/06 Python
python 垃圾收集机制的实例详解
2017/08/20 Python
对python .txt文件读取及数据处理方法总结
2018/04/23 Python
戴尔英国官网:Dell英国
2017/05/27 全球购物
英国领先的酒杯和水晶玻璃器皿制造商:Dartington Crystal
2019/06/23 全球购物
介绍一下sql server的安全性
2014/08/10 面试题
应届毕业生求职信范文分享
2013/12/26 职场文书
致全体运动员广播稿
2014/02/01 职场文书
高中教师先进事迹材料
2014/08/22 职场文书
教师竞聘上岗演讲稿
2014/09/03 职场文书
工会文体活动总结
2015/05/07 职场文书
2016大学生国家助学贷款承诺书
2016/03/25 职场文书
《狼王梦》读后感:可怜天下父母心
2019/11/01 职场文书
Python Django搭建文件下载服务器的实现
2021/05/10 Python
Python 操作pdf pdfplumber读取PDF写入Exce
2022/08/14 Python