Js添加事件addEventListener和attachEvent

给对象增加一个事件,可以用上文的方法,当然也可以用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的低版本没人用了,就不用这么麻烦了,呵呵。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值