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小时内与您取得联系。