addEventListener和on的区别
addEventListener和on的区别
为什么需要addEventListener?
先来看一个片段:
html代码
<div id="box">追梦子</div>
用on的代码
1 window.onload = function(){
2 var box = document.getElementById("box");
3 box.onclick = function(){
4 console.log("我是box1");
5 }
6 box.onclick = function(){
7 box.style.fontSize = "18px";
8 console.log("我是box2");
9 }
10 }
运行结果:“我是box2”
看到了吧,第二个onclick把第一个onclick给覆盖了,虽然大部分情况我们用on就可以完成我们想要的结果,但是有时我们又需要执行多个相同的事件,很明显如果用on完成不了我们想要的,那不用猜,你们肯定知道了,对!addEventListener可以多次绑定同一个事件并且不会覆盖上一个事件。
用addEventListener的代码
1 window.onload = function(){
2 var box = document.getElementById("box");
3 box.addEventListener("click",function(){
4 console.log("我是box1");
5 })
6 box.addEventListener("click",function(){
7 console.log("我是box2");
8 })
9 }
运行结果:我是box1
我是box2
addEventListenert方法第一个参数填写事件名,注意不需要写on,第二个参数可以是一个函数,第三个参数是指在冒泡阶段还是捕获阶段处理事件处理程序,如果为true代表捕获阶段处理,如果是false代表冒泡阶段处理,第三个参数可以省略,大多数情况也不需要用到第三个参数,不写第三个参数默认false
第三个参数的使用
有时候的情况是这样的
<body>
<div id="box">
<div id="child"></div>
</div>
</body>
如果我给box加click事件,如果我直接单击box没有什么问题,但是如果我单击的是child元素,那么它是怎么样执行的?(执行顺序)
1 box.addEventListener("click",function(){
2 console.log("box");
3 })
4
5 child.addEventListener("click",function(){
6 console.log("child");
7 })
执行的结果:
child
box
也就是说,默认情况事件是按照事件冒泡的执行顺序进行的。
如果第三个参数写的是true,则按照事件捕获的执行顺序进行的。
1 box.addEventListener("click",function(){
2 console.log("box");
3 },true)
4
5 child.addEventListener("click",function(){
6 console.log("child");
7 })
执行的结果:
box
child
事件冒泡执行过程:
从最具体的的元素(你单击的那个元素)开始向上开始冒泡,拿我们上面的案例讲它的顺序是:child->box
事件捕获执行过程:
从最不具体的元素(最外面的那个盒子)开始向里面冒泡,拿我们上面的案例讲它的顺序是:box->childaddEventListener和普通.onclick的区别
addEventListener是在 FireFox 上的用法。
?
addEventListener的参数一共有三个,语法为:?
element.addEventListener(type,listener,useCapture)?
详解?
其中element是要绑定函数的对象。
?
type是事件名称,要注意的是"onclick"要改为"click","onblur"要改为"blur",也就是说事件名不要带"on"。
?
listener当然就是绑定的函数了,记住不要跟括号?
最后一个参数是个布尔值,表示该事件的响应顺序,下面重点介绍一下addEventListener的第3个参数(useCapture)。
?
userCapture若为true,则浏览器采用Capture,若为false则采用bubbing方式。
建议用false?
区别:
1
2
3
4
5
var?btn1Obj?=?document.getElementById("btn1");??
//element.addEventListener(type,listener,useCapture);??
btn1Obj.addEventListener("click",method1,false);??
btn1Obj.addEventListener("click",method2,false);??
btn1Obj.addEventListener("click",method3,false);
执行顺序为method1->method2->method3?
1
2
3
document.getElementById("btn").onclick?=?method1;??
document.getElementById("btn").onclick?=?method2;??
document.getElementById("btn").onclick?=?method3;
如果这样写,那么将会只有medhot3被执行晕了addEventListener怎么往里面传参
//addEventListener的使用方式:<br><br>target.addEventListener(type,listener,useCapture);<br><br>//target:文档节点、document、window或XMLHttpRequest。
<br>//type:字符串,事件名称,不含“on”,比如“click”、“mouseover”、“keydown”等。
<br>//listener:实现了EventListener接口或者是JavaScript中的函数。
<br>//useCapture:是否使用捕捉,一般用false。
例如:document.getElementById("testText").addEventListener("keydown",function(event){alert(event.keyCode);},false);如何使用addEventListener添加事件
使用attchEvent和detachEvent添加、注销事件;
火狐和其他浏览器都不支持,幸运的是他们都支持W3C标准的:
addEventListener和removeEventListener方法
形如:element.addEventListener(type,listener,useCapture);//添加事件
element.removeEventListener(type,listener,useCapture);//注销事件
这里需要和attchEvent相区别,event直接写事件名即可,如click事件->object.addEventListener("click",listener,useCapture);
imidc对日本独立服务器在搞特别促销,原价159美元的机器现在只需要88美元,而且给13个独立IPv4,30Mbps直连带宽,不限制流量。注意,本次促销只有一个链接,有2个不同的优惠码,你用不同的优惠码就对应着不同的配置,价格也不一样。88美元的机器,下单后默认不管就给512G SSD,要指定用HDD那就发工单,如果需要多加一个/28(13个)IPv4,每个月32美元...官方网站:https:...
HostKvm发布了夏季特别促销活动,针对香港国际/韩国机房VPS主机提供7折优惠码,其他机房全场8折,优惠后2GB内存套餐月付仅5.95美元起。这是一家成立于2013年的国外主机服务商,主要提供基于KVM架构的VPS主机,可选数据中心包括日本、新加坡、韩国、美国、中国香港等多个地区机房,均为国内直连或优化线路,延迟较低,适合建站或者远程办公等。下面分享几款香港VPS和韩国VPS的配置和价格信息。...
适逢中国农历新年,RAKsmart也发布了2月促销活动,裸机云、云服务器、VPS主机全场7折优惠,新用户注册送10美元,独立服务器每天限量秒杀最低30.62美元/月起,美国洛杉矶/圣何塞、日本、香港站群服务器大量补货,1-10Gbps大带宽、高IO等特色服务器抄底价格,机器可选大陆优化、国际BGP、精品网及CN2等线路,感兴趣的朋友可以持续关注下。裸机云新品7折,秒杀产品5台/天优惠码:Bare-...
addeventlistener为你推荐
财务系统软件财务软件哪个好用,2020年财务软件排名?excel大写金额EXCEL金额大写动态图片格式动态图片是什么格式?webservice框架如何用webservice 的cxf框架云输入法QQ云输入法的候选窗口是什么样的?java程序员招聘java程序员学出来工作好不好找,工资咋样?云办公平台Gleasy云办公平台解决了哪些问题?医院排队系统医院排队机和医院排队机的区别有哪些?短信套餐手机短信都有什么套餐particular教程如何用AE做出花瓣从身体变出来的特效
长春域名注册 老左 谷歌香港 网络星期一 抢票工具 网页背景图片 500m空间 cpanel空间 免费个人空间申请 ntfs格式分区 双十一秒杀 1美金 电信主机 香港新世界中心 登陆空间 免费的asp空间 免费ftp 国外在线代理服务器 数据库空间 wordpress空间 更多