给对象增加一个事件,可以用上文的方法,当然也可以用addEventListener和attachEvent。
两者有一个区别:
addEventListener和attachEvent能够给对象增加多个事件,而上文的方法只能增加一个事件。
下面说说attachEvent,据说是IE独有的方法,IE5出现,IE11废止,但是为了考虑兼容IE的一些低级版本,处理程序的时候还是需要考虑。
看程序:
<html>
<head>
<title>attachEvent</title>
<script type="text/javascript">
if (window.attachEvent) {
window.attachEvent("onload", iniEvent);
} else if (window.addEventListener) {
window.addEventListener("load", iniEvent, false);
}
function iniEvent()
{
var btn = document.getElementById("btn");
var d1 = document.getElementById("div1");
if (document.all){
btn.attachEvent("onclick", click1);
btn.attachEvent("onclick", click2);
btn.attachEvent("onclick", click3);
d1.attachEvent("onmouseover", over1);
d1.attachEvent("onmouseout", out1);
}
else
{
btn.addEventListener("click", click1, false);
btn.addEventListener("click", click2, false);
btn.addEventListener("click", click3, false);
d1.addEventListener("mouseover", over1,false);
d1.addEventListener("mouseout", out1,false);
}
}
function click1()
{
alert('click1');
}
function click2()
{
alert('click2');
}
function click3()
{
alert('click3');
}
function over1()
{
var d1 = document.getElementById("div1");
d1.innerHTML="谢谢"
}
function out1()
{
var d1 = document.getElementById("div1");
d1.innerHTML="把鼠标移到上面"
}
</script>
</head>
<body >
<input type="button" id="btn" value="attachEvent" />
<div id="div1" style="background-color:green;width:120px;height:20px;padding:40px;color:#ffffff;">把鼠标移到上面</div>
</body>
</html>
例子中定义了很多事件,有onload,onclick,onmouseover,onmouseout,分别使用在window,button和div对象上。
通过程序,我们可以看出addEventListener和attachEvent的区别:
在attachEvent方法中,事件是以"on"开头的,而addEventListener,事件不是以"on"开头,另外,addEventListener还有第三个参数,一般指定false就可以。另外,两者执行的顺序也是不一样的,attachEvent是从后往前执行,addEventListener是从前往后执行。大家把代码拷贝到文件在各个浏览器执行一下就清楚了。
为了提高程序复用性,我们封装一下代码,提供一个通用函数,看代码:
<html>
<head>
<title>attachEvent</title>
<script type="text/javascript">
addEvent(window,"load",iniEvent)
function addEvent(element,e,fn)
{
if(element.addEventListener)
{
element.addEventListener(e,fn,false);
}
else
{
element.attachEvent("on"+e,fn);
}
}
function iniEvent()
{
var btn = document.getElementById("btn");
var d1 = document.getElementById("div1");
addEvent(btn,"click",click1)
addEvent(btn,"click",click2)
addEvent(btn,"click",click3)
addEvent(d1,"mouseover",over1)
addEvent(d1,"mouseout",out1)
}
function click1()
{
alert('click1');
}
function click2()
{
alert('click2');
}
function click3()
{
alert('click3');
}
function over1()
{
var d1 = document.getElementById("div1");
d1.innerHTML="谢谢"
}
function out1()
{
var d1 = document.getElementById("div1");
d1.innerHTML="把鼠标移到上面"
}
</script>
</head>
<body >
<input type="button" id="btn" value="attachEvent" />
<div id="div1" style="background-color:green;width:120px;height:20px;padding:40px;color:#ffffff;">把鼠标移到上面</div>
</body>
</html>
代码少了不少吧,过两年IE的低版本没人用了,就不用这么麻烦了,呵呵。