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

不能实现效果啊



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />


<title>无标题文档</title>

</head>


<body>

<input id="btn" type="button" value="按钮"  onclick="showMes()" />

<input id="btn2" type="button" value="按钮2" />

<input id="btn3" type="button" value="按钮3" />

<script type="text/javascript">

   function showMes(){

      alert("ni hao!");

   }

   //DOM0级

   var btn2=document.getElementById('btn2');

   var btn3=document.getElementById('btn3');

  btn2.onclick=function(){

    alert("ni hao!");

   }

  //btn2.onclick=null;

  /* //DOM2级

   btn3.addEventListener('click',showMes,false);

   //btn3.removeEventListener('click',showMes,false);*/

   //IE

  // btn3.attachEvent('onclick',showMes);

   //btn3.detachEvent('onclick',showMes);*/

   var eventUtil={

      addHadler:function(element,type,handler){

   

if(element.addEventListener){  //DOM2级

 element.addEventListener(type,handler,false);

}else if(element.attachEvent){  //IE

element.attachEvent('on'+type,handler);

}else{ //DOM0级

 element['on'+type]=handler;

}

 },

   removeHadler:function(element,type,handler){

   

if(element.removeEventListener){  //DOM2级

 element.removeEventListener(type,handler,false);

}else if(element.detachEvent){  //IE

element.detachEvent('on'+type,handler);

}else{ //DOM0级

 element['on'+type]=null;

}

 }

   }

     eventUtil.addHandler(btn3,'click',showMes);

</script>

</body>

</html>


提问者:浪涛飞 2016-06-04 19:45

个回答

  • 易水逝
    2016-06-04 22:38:46
    已采纳

      你定义的方法:addHadler:function(element,type,handler)

    你调用的方法:eventUtil.addHandler(btn3,'click',showMes);

    发现问题没?方法名写的不一样~细心啊~

  • qq_荞麦_1
    2016-06-04 22:41:38

    你添加和删除句柄那儿写错了addHandler和removeHandler,你写成addHadler和removeHadler了

  • 白仔
    2016-06-04 22:39:41

    你在封装那个对象的时候addHandler中间少写了一个n