zoukankan      html  css  js  c++  java
  • attachEvent 与 addEventListener 的用法、区别

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

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

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

    <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>

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

    下面我们就使用下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这两个方法来实现。实现方法如下:

    <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);
      }
    只要肯努力学习工作,面包会有的,牛奶也会有的
  • 相关阅读:
    匹配域名
    异步加载js文件
    Python3.X BeautifulSoup([your markup], "lxml") markup_type=markup_type))的解决方案
    CSDNmarkdown编辑器直接写代码的小效果(一生愿)
    JAVA_OA(十四)番外:JAVAWEB防止表单重复提交的方法整合(包括集群部署)
    JAVA_OA(十四):SSM练手项目bug-Oracle分页web页面无法转到下一页
    JAVA_OA(十四):SSM练手项目bug-JSP页面传递参数的编码问题
    JAVA_OA(八):springMVC对JDBC的操作小项目b
    完全卸载oracle11g教程、Oracle11g的卸载方法和步骤
    JAVA_OA(八):springMVC对JDBC的操作小项目a
  • 原文地址:https://www.cnblogs.com/sandraMaying/p/attachEvent_addEventListener.html
Copyright © 2011-2022 走看看