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

 更新时间:2020年03月02日 09:54:40   作者:叶落森  
这篇文章主要介绍了js中addEventListener()与removeEventListener()用法,结合实例形式分析了js中addEventListener()与removeEventListener()基本功能、用法与操作注意事项,需要的朋友可以参考下

本文实例讲述了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.jb51.net/code/HtmlJsRun测试上述代码运行效果。

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript操作DOM技巧总结》、《JavaScript页面元素操作技巧总结》、《JavaScript事件相关操作与技巧大全》、《JavaScript查找算法技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript错误与调试技巧总结

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

相关文章

  • JavaScript每天必学之基础知识

    JavaScript每天必学之基础知识

    JavaScript每天必学之基础知识,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • 微信小程序使用二次贝塞尔曲线画波浪

    微信小程序使用二次贝塞尔曲线画波浪

    这篇文章主要为大家详细介绍了微信小程序使用二次贝塞尔曲线画波浪,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • 利用JS实现简单的瀑布流加载图片效果

    利用JS实现简单的瀑布流加载图片效果

    今天学习了一个瀑布流加载效果,很多网站都有瀑布流效果,下面通过本文给大家分享利用JS实现简单的瀑布流加载图片效果,需要的朋友参考下吧
    2017-04-04
  • js实现炫酷的左右轮播图

    js实现炫酷的左右轮播图

    这篇文章主要为大家详细介绍了基于JavaScript实现左右轮播图的具体代码,具有一定的参考价值,感兴趣的朋友可以参考一下
    2017-01-01
  • BootStrap表单控件之文本域textarea

    BootStrap表单控件之文本域textarea

    这篇文章主要介绍了BootStrap表单控件之文本域textarea,需要的朋友可以参考下
    2017-05-05
  • JS优化与惰性载入函数实例分析

    JS优化与惰性载入函数实例分析

    这篇文章主要介绍了JS优化与惰性载入函数,结合具体实例形式分析了JS惰性载入的原理、实现技巧与相关注意事项,需要的朋友可以参考下
    2017-04-04
  • 一文吃透JS树状结构的数据处理(增删改查)

    一文吃透JS树状结构的数据处理(增删改查)

    在开发后台管理系统时,常常会涉及到各种树状结构的数据处理逻辑,例如:增,删,改,查等。而树状结构的处理就没有数组那么的直观。本文为大家总结了JS树状结构的数据处理的方法,需要的可以参考下
    2022-07-07
  • JavaScript实现简易加法计算器

    JavaScript实现简易加法计算器

    这篇文章主要介绍了JavaScript实现简易加法计算器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-03-03
  • 带左右箭头图片轮播的JS代码

    带左右箭头图片轮播的JS代码

    这篇文章主要介绍了带左右箭头图片轮播的JS代码,有需要的朋友可以参考一下
    2013-12-12
  • JS如何循环遍历JSON数据

    JS如何循环遍历JSON数据

    这篇文章主要介绍了JS如何循环遍历JSON数据的方法,本文提供了 JS 循环 JSON 数据列,以及 JS 循环遍历 JSON 数据的例子,需要的朋友可以参考下
    2024-01-01

最新评论