全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

addEventListener()与removeEventListener()解析

addEventListener()与removeEventListener()用于处理指定和删除事件处理程序操作。
所有的DOM节点中都包含这两种方法,并且它们都接受3个参数:要处理的事件名、作为事件处理程序的函数和一个布尔值。

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

addEventListener的参数一共有三个,语法为:
element.addEventListener(type,listener,useCapture)

下面是详解:
1、其中element是要绑定函数的对象。
2、type是事件名称,要注意的是"onclick"要改为"click","onblur"要改为"blur",也就是说事件名不要带"on"。
3、listener当然就是绑定的函数了,记住不要跟括号
4、最后一个参数是个布尔值,表示该事件的响应顺序,下面重点介绍一下addEventListener的第3个参数(useCapture)。

要在按钮上为click事件添加事件处理程序,可以使用下列代码:

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);

在这个例子中,我使用addEventListener()添加一个事件处理程序。
虽然调用removeEventListener看似使用了相同的参数
但实际上,第二个参数与传入addEventListener()中的是完全不同的函数。
而传入removeEventListener()中的事件处理程序函数必须与传入addEventListener()中的相同,

下面的例子所示:

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

重写后的这个例子没有问题,是因为在addEventListener()和removeEventListener()中用来相同的函数。
实验结果是,用户点击button时,每次都会输出"I have been clicked!",说明removeEventListener()函数没有起到作用。 

通过查找资料,得出结论。在使用removeEventListener()函数时,handler函数,必须和使用addEventListener()里面的handler函数必须相同。

所以上面写的代码是错误的。修正之后的代码应该如下:

//addEventListener()和removeEventListener()中handler函数必须相同,移除事件函数才有效。
function myhandler(){
  console.log("I have been clicked!");
  document.getElementById('info').removeEventListener('click',myhandler,false);
}
var target=document.getElementById('info');
target.addEventListener("click", myhandler, false);
target.removeEventListener("click", myhandler, false); //有效!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# addEventListener  # removeEventListener  # JavaScript使用addEventListener添加事件监听用法实例  # addEventListener—jQuery的事件监听方法  # 移除  # 的是  # 所示  # 绑定  # 布尔值  # 是个  # 是因为  # 在这个  # 多个  # 要在  # 这也  # 要注意  # 第二个  # 重写  # 可以使用  # 介绍一下  # 这两种  # 要跟  # 中都  # 大家多多 


相关文章: 建站主机如何选?性能与价格怎样平衡?  成都响应式网站开发,dw怎么把手机适应页面变成网页?  昆明网站制作哪家好,昆明公租房申请网上登录入口?  唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?  已有域名和空间如何快速搭建网站?  建站上市公司网站建设方案与SEO优化服务定制指南  企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?  浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?  Bpmn 2.0的XML文件怎么画流程图  微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?  建站主机如何选?高性价比方案全解析  免费制作小说封面的网站有哪些,怎么接网站批量的封面单?  网站制作需要会哪些技术,建立一个网站要花费多少?  济南专业网站制作公司,济南信息工程学校怎么样?  ,sp开头的版面叫什么?  如何在阿里云域名上完成建站全流程?  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  如何快速生成高效建站系统源代码?  小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?  宝华建站服务条款解析:五站合一功能与SEO优化设置指南  ,网站推广常用方法?  ,想在网上投简历,哪几个网站比较好?  Python路径拼接规范_跨平台处理说明【指导】  小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化  巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成  建站之星如何一键生成手机站?  如何规划企业建站流程的关键步骤?  公司网站制作费用多少,为公司建立一个网站需要哪些费用?  如何续费美橙建站之星域名及服务?  如何选择高效稳定的ISP建站解决方案?  淘宝制作网站有哪些,淘宝网官网主页?  太原网站制作公司有哪些,网约车营运证查询官网?  如何快速生成专业多端适配建站电话?  如何在橙子建站中快速调整背景颜色?  洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?  如何在阿里云香港服务器快速搭建网站?  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  简单实现Android文件上传  如何通过商城自助建站源码实现零基础高效建站?  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  如何在局域网内绑定自建网站域名?  建站之星收费标准详解:套餐费用及年费价格表一览  详解jQuery中基本的动画方法  南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?  如何用狗爹虚拟主机快速搭建网站?  制作电商网页,电商供应链怎么做?  整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。