1.HTML事件处理
直接添加到HTML结构中
缺点:修改一处同时需要修改两处 函数的名称如果被修改,html中的onclick事件也要修改。
如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>事件处理</title>
</head>
<body>
<div id="div">
<button id="btn" οnclick="demo()">按钮</button>
</div>
<script>
function demo () {
alert("Hello html事件处理");
}
</script>
</body>
</html>
2.DOM 0级事件处理
把一个函数值赋给一个时间处理程序属性
优点:不需要修改HTML中的button 只需修改一处
缺点:如果有多个事件 会被覆盖掉 只会显示最后一个事件
如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>事件处理</title>
</head>
<body>
<div id="div">
<button id="btn">按钮</button>
</div>
<script>
var btn1=document.getElementById("btn");
btn1.οnclick=function () {
alert("dom0级事件处理程序1");
}
btn1.οnclick=function () {
alert("dom0级事件处理程序2"); //会覆盖掉dom 事件处理程序1
}
// btn1.οnclick=null; //清楚当前事件
</script>
</body>
</html>
3.DOM 2级事件处理
优点:不会被覆盖掉 使用起来很方便 符合用户的使用心得
addEventListener(“事件名”,“事件处理函数”,“布尔值”);
true:事件捕获
false:事件冒泡
remove EventListener(); //移除事件
如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>事件处理</title>
</head>
<body>
<div id="div">
<button id="btn">按钮</button>
</div>
<script>
var btn1=document.getElementById("btn")
btn1.addEventListener("click",demo1);
btn1.addEventListener("click",demo2);
btn1.addEventListener("click",demo3);
function demo1() {
alert("DOM 2级事件处理程序1");
}
function demo2() {
alert("DOM 2级事件处理程序2");
}
function demo3() {
alert("DOM 2级事件处理程序3");
}
btn1.removeEventListener("click",demo2);
//移除demo2;
</script>
</body>
</html>
4.IE事件处理程序(使用方法和参数和addEventListener一样)
attachEvent
detachEvent(移除事件)
如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>事件处理</title>
</head>
<body>
<div id="div">
<button id="btn">按钮</button>
</div>
<script>
var btn1=document.getElementById("btn")
if (btn1.addEventListener) {
btn1.addEventListener("click",demo);
}else if (btn1.attachEvent){
btn1.attachEvent("onclick","demo");
}else{
btn1.οnclick=demo();
//以前有些浏览器只能支持DOM 0级事件 所以这里添加一个DOM 0 级事件
}
function demo () {
alert("Hello");
}
</script>
</body>
</html>