这种方式在JavaScript代码中绑定事件,可以使JavaScript代码与HTML标签分离,文档结构清晰,便于管理和开发。但可能会被其他人添加的点击事件覆盖。 4. 绑定事件监听函数addEventListener(attachEvent) (1)引入:如果直接为元素绑定事件,那么该元素该事件的最后一个处理函数会覆盖之前的函数。如下: 只输出3333,前面的处理函数不执行
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>title</title> </head> <body> <input type="button" value="按钮" id="btn"/> <script> var btn = document.getElementById("btn"); btn.onclick=function () { console.log("1111"); }; btn.onclick=function () { console.log("2222"); }; btn.onclick=function () { console.log("3333"); }; </script> </body> </html>(2)解决方法:addEventListener(attachEvent) 1 对象.addEventListener(“事件类型”,事件处理函数,false);–谷歌和火狐支持,IE8不支持,最后一个参数是控制点击事件发生时,时冒泡阶段还是捕获阶段。 2 对象.attachEvent(“有on的事件类型”,事件处理函数)–谷歌不支持,火狐不支持,IE8支持
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>title</title> </head> <body> <input type="button" value="按钮" id="btn"/> <script> var btn = document.getElementById("btn"); btn.addEventListener("click",function () { console.log("1111"); },false); btn.addEventListener("click",function () { console.log("2222"); },false); btn.addEventListener("click",function () { console.log("3333"); },false); </script> </body> </html>结果:1111、2222、3333都输出
(4)兼容代码
<script> //为任意元素.绑定任意的事件, 任意的元素,事件的类型,事件处理函数 function addEventListener(element,type,fn) { if(element.addEventListener){ element.addEventListener(type,fn,false); }else if(element.attachEvent){ element.attachEvent("on"+type,fn); }else{ element["on"+type]=fn; } } </script>(5)addEventListener和attachEvent的区别 (1)方法名不一样 (2)参数个数不一样addEventListener三个参数,attachEvent两个参数 (3)addEventListener 谷歌,火狐,IE11支持,IE8不支持,attachEvent 谷歌火狐不支持,IE11不支持,IE8支持 (4)this不同,addEventListener 中的this是当前绑定事件的对象, attachEvent中的this是window (5)addEventListener中事件的类型(事件的名字)没有on,attachEvent中的事件的类型(事件的名字)有on
ps:用什么方式绑定事件,就应该用对应的方式解绑事件
