Js 事件详解
1.事件流
1.1 事件流
描述的是在页面中接受事件的顺序
1.2 事件冒泡
由最具体的元素接收,然后逐级向上传播最不具体的元素的节点(文档)
1.3 事件捕获
最不具体的节点先接收事件,而最具体的节点应该是最后接收事件
例如:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <div id="div"> <button id="btn1">按钮</button> </div> </body> </html>
事件的冒泡就是先从button再到div再到body最后到文档是逐级向上,而事件捕获就是先接受到文档然后逐级向下到button。
2.事件处理
2.1 HTML事件处理
直接添加到HTML结构中
2.2 DOM0级事件处理
把一个函数赋值给一个事件处理程序属性
2.3 DOM2级事件处理
addEventListener("事件名","事件处理函数","布尔值");
true:事件捕获
false:事件冒泡
removeEventListener();
2.4 IE事件处理程序
attachEvent
detachEvent
EventHanding.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <!--Html事件处理--> <button id="btn1" onclick="demo1()">Html事件处理</button> <script> function demo1(){ alert("Html事件处理"); } </script> <br /> <!--DOM0级事件处理--> <button id="btn2">DOM0级事件处理</button> <script> var btn2=document.getElementById("btn2"); btn2.onclick=function(){alert("DOM0级事件处理1")};//会被覆盖 btn2.onclick=function(){alert("DOM0级事件处理2")};//会被覆盖 btn2.onclick=function(){alert("DOM0级事件处理3")}; //btn2.onclick=null; </script> <br /> <!--DOM2级事件处理--> <button id="btn3">DOM2级事件处理</button> <script> var btn3=document.getElementById("btn3"); btn3.addEventListener("click",demo31); btn3.addEventListener("click",demo32); btn3.addEventListener("click",demo33); function demo31(){ alert("DOM2级事件处理31"); } function demo32(){ alert("DOM2级事件处理32"); } function demo33(){ alert("DOM2级事件处理33"); } btn3.removeEventListener("click",demo31); </script> <br /> <!--IE事件处理--> <button id="btn4">IE事件处理</button> <script> //小于等于IE8 var btn4=document.getElementById("btn4"); if(btn4.addEventListener){ btn4.addEventListener("click",demo4); }else if(btn4.attachEvent){ btn4.attachEvent("onclick",demo4); }else{ btn4.onclick=demo4(); } function demo4(){ alert("hello"); } </script> </body> </html>
3.事件对象
3.1 事件对象
在触发DOM事件的时候都会产生一个对象
3.2 事件对象event
1>type:获取事件类型
2>target:获取事件目标
3>stopPropagation():阻止事件冒泡
4> preventDefault():阻止事件默认行为
EventObject.html
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 </head> 7 <body> 8 <div id="div"> 9 <button id="btn1">按钮</button> 10 <a id="aid" href="EventHanding.html">跳转</a> 11 </div> 12 13 <script> 14 document.getElementById("btn1").addEventListener("click",showtype); 15 function showtype(event){ 16 alert(event.type);//获得事件类型 17 alert(event.target);//获得事件目标 18 event.stopPropagation();//阻止事件冒泡 19 } 20 21 document.getElementById("div").addEventListener("click",showdiv);//事件的冒泡 22 function showdiv(){ 23 alert("div"); 24 } 25 26 document.getElementById("aid").addEventListener("click",showA); 27 function showA(event){ 28 event.stopPropagation(); 29 event.preventDefault();//阻止事件默认行为 30 } 31 </script> 32 </body> 33 </html>
本文来自博客园,作者:一纸年华,转载请注明原文链接:https://www.cnblogs.com/nullcodeworld/p/9308782.html