问答详情
源自:2-4 IE事件处理程序及跨浏览器解决

为什么按钮点击了都没用

<!DOCTYPE html>
<html>
 <head>
  <meta charset="UTF-8">
  <title></title>
 </head>
 <body>
  <div >
   <input type="button" value="按钮2" id="btn2"/>
   <input type="button" value="按钮3" id="btn3"/>
  </div>
  
  <script>
   function showMes(){
    alert("hello world!")
   }
   var btn2=document.getElementById('btn2');
   var btn3=document.getElementById('btn3');
   btn2.onclick=function(){
    alert("这是通过DOM0级添加的事件");
   }
   //跨浏览器处理程序
   var eventUtil={
    //添加句柄
    addHandler:function(element,type,handler){
     if(element.addEventListener){
      element.addEventListener(type,handler,false);
     }else if(element.attachEvent){
      element.attachEvent('on'+type,handler);
     }else{
      element['on'+type]=handler;
     }
    }
    //删除句柄
    removeHandler:function(element,type,handler){
     if(element.removeEventListener){
      element.removeEventListener(type,handler,false);
     }else if(element.detachEvent){
      element.detachEvent('on'+type,handler);
     }else{
      element['on'+type]=handler;
     }
    }
   }
   eventUtil.addHandler(btn3,'click',showMes);
  </script>
 </body>
</html>


提问者:菲尔活该 2016-07-30 00:18

个回答

  • 很拉风很拉风的仔仔
    2016-07-30 11:05:32
    已采纳

    删除句柄,else后面的DOM0级不是handler,而是null,另外添加句柄和删除句柄内部封装用逗号隔开。如图所示。
    http://img.mukewang.com/579c190b00015fd705310405.jpg

  • KevinLL
    2016-07-30 10:30:33

    var eventUtil={ addHandler:function(){} , removeHandler:function(){} }

    两个方法中间要加上逗号