今天学习了几种处理DOM事件的方法,特分享一下。
一、HTML事件处理程序
<pre name="code" class="html"><!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>DOM</title>
<script type="text/javascript">
function test(){
alert("你点击了");
}
</script>
</head>
<body>
<input id="btn" type="button" value="button" onclick="test()">
</body>
</html>
这种方法缺点:HTML代码和javascript代码混合在一起,不便于后期维护。如果需要修改函数名,牵一发而动全身。需同时修改两处代码,很容易出错。
二、DOM0级事件处理程序
<pre name="code" class="html"><span style="font-size:10px;"><!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>DOM</title>
<script type="text/javascript">
window.onload = function(){
var btn1 = document.getElementById('btn');
btn1.onclick = function(){
alert("你点击了");
}
};
</script>
</head>
<body>
<input id="btn" type="button" value="button">
</body>
</html></span>
这是比较传统的方式,就是将一个函数赋值给一个事件处理程序属性。这种为事件处理程序赋值的方法是第四代Web浏览器中出现的,而且至今仍然为所有现代浏览器所支持。
三、DOM2级事件处理程序
IE中:
attachEvent(event, eventFun);
detachEvent(event, eventFun);
event:事件名称,如“onclick”、“onmouseover”、“onkeydown”等。
eventFun:js函数名称
<pre name="code" class="html"><!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>DOM</title>
<script type="text/javascript">
window.onload = function(){
var btn1 = document.getElementById('btn');
btn1.attachEvent("onclick",test);
};
function test(){
alert("你点击了");
}
</script>
</head>
<body>
<input id="btn" type="button" value="button">
</body>
</html>
非IE:
addEventListener(event, eventFun, catch);
removeEventListener(event, eventFun, catch);
event:事件名称,如“onclick”、“onmouseover”、“onkeydown”等。
eventFun:js函数名称
catch:是否使用捕捉,一般用 false
<span style="font-size:10px;"><!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>DOM</title>
<script type="text/javascript">
window.onload = function(){
var btn1 = document.getElementById('btn');
btn1.addEventListener("click",test,false);
};
function test(){
alert("你点击了");
}
</script>
</head>
<body>
<input id="btn" type="button" value="button">
</body>
</html></span>
2016/2/11补充
今天对点击事件的event有了新理解,下图展示了发生点击事件时event的属性