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);
      }
    只要肯努力学习工作,面包会有的,牛奶也会有的
  • 相关阅读:
    es之零停机重新索引数据
    es之索引的别名操作
    es索引基本操作(2)之 索引映射(mappings)管理和索引库配置管理(settings)
    进程管理(八)-进程控制
    进程管理(七)-进程状态与转换
    进程管理(六)-进程的描述
    numpy数组转置与轴变换
    numpy数组的索引和切片
    numpy数组的运算
    numpy库中数组的数据类型
  • 原文地址:https://www.cnblogs.com/sandraMaying/p/attachEvent_addEventListener.html
Copyright © 2011-2022 走看看