JavaScript事件

1、JavaScript事件流

(1)事件冒泡:具体到不具体(即button到DOCTYPE)。

(2)事件捕获:不具体到具体(即DOCTYPE到button)。

2、JavaScript事件处理

(1)HTML事件处理:

直接添加到HTML结构中。

<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="utf-8">
<title>HTML事件处理</title>
</head>
<body>
<div id="div">
<button id="btn1" onclick="demo()">按钮</button>
</div>
<script type="text/javascript">
function demo () {
// body...
alert("Hello HTML事件处理");
}
</script>
</body>
</html>

 

(2)DOM0级事件处理

把一个函数赋值给一个事件程序属性。

 缺点:多个事件会被覆盖掉,就近原则。

<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="utf-8">
<title>HTML事件处理</title>
</head>
<body>
<div id="div">
<button id="btn1" onclick="demo()">按钮</button>
</div>
<script type="text/javascript">
var btn1=document.getElementById("btn1");
btn1.onclick=function (){alert("Hello DOM0级事件处理");}

// btn1.onclick=null;//清除事件处理
</script>
</body>
</html>

(3)DOM2级事件处理:(IE则IE9版本之上)

优点:事件不会被覆盖

addEventListener(“事件名”,“事件处理函数”,“布尔值”);

true:事件捕获

false:事件冒泡

removeEventListener();

<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="utf-8">
<title>HTML事件处理</title>
</head>
<body>
<div id="div">
<button id="btn1" onclick="demo()">按钮</button>
</div>
<script type="text/javascript">
var btn1=document.getElementById("btn1");
btn1.addEventListener("click",demo1);
btn1.addEventListener("click",demo2);
function demo1(){
alert("DOM2级事件处理01");
}
function demo2(){
alert("DOM2级事件处理02");
}

//btn1.removeEventListener("click",demo2);//移除事件
</script>
</body>
</html>

(4)IE事件处理程序:(IE9版本之上)

attachEvent

detachEvent

(5)事件适应浏览器

<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="utf-8">
<title>HTML事件处理</title>
</head>
<body>
<div id="div">
<button id="btn1" onclick="demo()">按钮</button>
</div>
<script type="text/javascript">
var btn1=document.getElementById("btn1");
if (btn1.addEventListener) {
btn1.addEventListener("click",demo);
}else if(btn1.attachEvent){
btn1.attachEvent("onclick",demo);
}else{
btn1.onclick=demo();
}
function demo(){
alert("Hello!");
}

</script>
</body>
</html>

 

(6)JavaScript事件对象:

在触发DOM事件的时候都会产生一个对象。

事件对象event:

①type:事件类型。

②target:事件目标。

③stopPropagation():阻止事件冒泡。

④preventDefault():阻止事件默认行为。

<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="utf-8">
<title>HTML事件处理</title>
</head>
<body>
<div id="div">
<button id="btn1" onclick="demo()">按钮</button>
<a href="http://www.baidu.com">百度</a>
</div>
<script type="text/javascript">
var btn1=document.getElementById("btn1");
btn1.addEventListener("click",show);
document.getElementById("div").addEventListener("click",showDiv);
document.getElementById("aid").addEventListener("click",showA);
function showType (event) {
// body...
//alert(event.type);
//alert(event.target);
event.stopPropagation();//阻止事件冒泡
}
function showDiv(){
alert("div");
}
function showA(event){
event.stopPropagation();
event.preventDefault();//阻止默认事件行为
}
</script>
</body>
</html>

posted @ 2015-10-10 11:44  大发朵朵  阅读(437)  评论(0编辑  收藏  举报