Js 事件详解

时间:2024-12-23 18:06:56

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

 <!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="div">
<button id="btn1">按钮</button>
<a id="aid" href="EventHanding.html">跳转</a>
</div> <script>
document.getElementById("btn1").addEventListener("click",showtype);
function showtype(event){
alert(event.type);//获得事件类型
alert(event.target);//获得事件目标
event.stopPropagation();//阻止事件冒泡
} document.getElementById("div").addEventListener("click",showdiv);//事件的冒泡
function showdiv(){
alert("div");
} document.getElementById("aid").addEventListener("click",showA);
function showA(event){
event.stopPropagation();
event.preventDefault();//阻止事件默认行为
}
</script>
</body>
</html>