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 相关文章推荐
不用写JS也能使用EXTJS视频演示
Dec 29 Javascript
JavaScript获取页面上某个元素的代码
Mar 13 Javascript
两种方法实现在HTML页面加载完毕后运行某个js
Jun 16 Javascript
$(&quot;&quot;).click与onclick的区别示例介绍
Sep 25 Javascript
jquery解决客户端跨域访问问题
Jan 06 Javascript
微信开发 使用picker封装省市区三级联动模板
Oct 28 Javascript
关于Node.js的events.EventEmitter用法介绍
Apr 01 Javascript
IntelliJ IDEA 安装vue开发插件的方法
Nov 21 Javascript
通过javascript实现扫雷游戏代码实例
Feb 09 Javascript
vue video和vue-video-player实现视频铺满教程
Oct 30 Javascript
手把手教你如何编译打包video.js
Dec 09 Javascript
vue实现列表拖拽排序的示例代码
Apr 08 Vue.js
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中取得image按钮传递的name值
2006/10/09 PHP
php 字符串中的\n换行符无效、不能换行的解决方法
2014/04/02 PHP
FleaPHP框架数据库查询条件($conditions)写法总结
2016/03/19 PHP
PHP中ajax无刷新上传图片与图片下载功能
2017/02/21 PHP
php模仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(中)
2017/06/11 PHP
用javascript实现无刷新更新数据的详细步骤 asp
2006/12/26 Javascript
JQuery 解析多维的Json数据格式
2009/11/02 Javascript
js+xml生成级联下拉框代码
2012/07/24 Javascript
js取模(求余数)隔行变色
2014/05/15 Javascript
js中document.write的那点事
2014/12/12 Javascript
jQuery Ajax中的事件详细介绍
2015/04/16 Javascript
javascript中Date()函数在各浏览器中的显示效果
2015/06/18 Javascript
使用HTML5+Boostrap打造简单的音乐播放器
2016/08/05 Javascript
轻松实现js选项卡切换效果
2016/09/24 Javascript
vue.js实例todoList项目
2017/07/07 Javascript
AngularJS ionic手势事件的使用总结
2017/08/09 Javascript
Ionic3实现图片瀑布流布局
2017/08/09 Javascript
vue中的scope使用详解
2017/10/29 Javascript
vue指令只能输入正数并且只能输入一个小数点的方法
2018/06/08 Javascript
[00:56]2014DOTA2国际邀请赛 DK、iG 赛前探访
2014/07/10 DOTA
初学Python实用技巧两则
2014/08/29 Python
Python基于scrapy采集数据时使用代理服务器的方法
2015/04/16 Python
python调用java模块SmartXLS和jpype修改excel文件的方法
2015/04/28 Python
简单谈谈Python流程控制语句
2016/12/04 Python
Java及python正则表达式详解
2017/12/27 Python
分享一下Python数据分析常用的8款工具
2018/04/29 Python
Python实现的读取电脑硬件信息功能示例
2018/05/30 Python
Python使用mongodb保存爬取豆瓣电影的数据过程解析
2019/08/14 Python
Python 转换RGB颜色值的示例代码
2019/10/13 Python
Pytorch实验常用代码段汇总
2020/11/19 Python
Canvas实现保存图片到本地的示例代码
2018/06/28 HTML / CSS
英国游戏机和游戏购物网站:365games.co.uk
2018/06/18 全球购物
eVitamins日本:在线购买折扣维生素、补品和草药
2019/04/04 全球购物
一份创业计划书范文
2014/02/08 职场文书
党支部书记岗位责任制
2014/02/11 职场文书
酒店仓管员岗位职责
2015/04/01 职场文书