首页 > 其他 > 详细

attachEvent 与 addEventListener 的用法、区别

时间:2014-02-15 05:30:23      阅读:236      评论:0      收藏:0      [点我收藏+]

我现在要给这个 id 为button 的元素添加click 事件,并且点击一次要连续执行三个函数

<div id="button">click me</div>

一般我们写一个js 事件都是这么写的:

bubuko.com,布布扣
<script type="text/javascript">
  function  clickButton(){
    alert(‘点击我第一次‘);
  }
  function  clickButtonT(){
    alert(‘点击我第二次‘);
  }
  function  clickButtonr(){
    alert(‘点击我第三次‘);
  }  

document.getElementById(‘button‘).onlick = clickButton;
document.getElementById(‘button‘).onlick = clickButtonT;
document.getElementById(‘button‘).onlick = clickButtonr;
</script>
bubuko.com,布布扣

但是这种写法你执行后会发现只弹出了“一个点击我三次”;

下面我们就使用下attachEvent的方法来进行编写:

        document.getElementById(‘button‘).attachEvent(‘onclick‘,clickButton);
        document.getElementById(‘button‘).attachEvent(‘onclick‘,clickButtonT);
       document.getElementById(‘button‘).attachEvent(‘onclick‘,clickButtonr);

使用该方法后三个函数都执行了,执行顺序:clickButtonr、clickButtonT、clickButton

执行到这,你用IE之外的浏览器测试会发现报错,是因为这个attachEvent很不幸的并不支持其他的浏览器,他是IE特有的;但是并不是说就没有其他的方法来支持火狐以及其他的浏览器了,现在有一个 addEventListener 的方法是可以支持的,具体写法是这样的

document.getElementById(‘button‘).addEventListener(‘click‘,clickButton,false);
document.getElementById(‘button‘).addEventListener(‘click‘,clickButtonT,false);
document.getElementById(‘button‘).addEventListener(‘click‘,clickButtonr,false);

使用该方法后三个函数都执行了,执行顺序:clickButton 、clickButtonT、clickButtonr,最终想要实现可以同时兼容所有浏览器:那么就结合着attachEvent和addEventListener这两个方法来实现。实现方法如下:

bubuko.com,布布扣
<script type="text/javascript">
   function ManageEvent(eventObj,event,eventHandler){
      if(eventObj.addEventListener){
        eventObj.addEventListener(event,eventHandler,false);
      }else if(eventObj.attachEvent){
        event = "on"+ event;
      eventObj.attachEvent(event,eventHandler);
      };
   };
   
  function  clickButton(){
    alert(‘点击我第一次‘);
  }
  function  clickButtonT(){
    alert(‘点击我第二次‘);
  }
  function  clickButtonr(){
    alert(‘点击我第三次‘);
  }  
  

  window.onload = function(){
       ManageEvent(document.getElementById(‘button‘),‘click‘,clickButton);
       ManageEvent(document.getElementById(‘button‘),‘click‘,clickButtonT);

       ManageEvent(document.getElementById(‘button‘),‘click‘,clickButtonr);
  }
bubuko.com,布布扣

attachEvent 与 addEventListener 的用法、区别

原文:http://www.cnblogs.com/sandraMaying/p/attachEvent_addEventListener.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!