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

为什么我在IE下运行不了

<!DOCTYPE  html>
<html>
 <head>
  <meta charset="UTF-8">
  <meta name="Generator" content="EditPlus®">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <title>Document</title>
 </head>
 <body>
  <div>
    <input type="button" value="按钮" id="btn" onclick="showMessage()">
    <input type="button" value="按钮2" id="btn2">
    <input type="button" value="按钮3" id="btn3">
  </div>
 
 <script type="text/javascript">
    //HTML事件流事件 缺点:HTML和JS代码紧密的耦合在一起
    function showMessage(){
        alert("Hello World!");
    }
    //这是DOM0级处理事件的方式
    btn2=document.getElementById("btn2");
    btn3=document.getElementById("btn3");
    btn2.onclick=function(){
        alert("123");
    }
    //这是DOM0级删除事件
    btn2.onclick=null;
    /*//以下DOM2级处理事件
    //添加一个监听点击事件 点击不加"on",可以添加多个事件
    //btn3.addEventListener("click",showMessage,false);
    //btn3.addEventListener("click",function(){
        //alert(this.value);
    //},false)
    //删除事件
    //btn3.removeEventListener("click",showMessage,false);*/
    //IE下的事件处理,这个时候要加上"on",不 需要布尔值。
    btn3.attachEvent("onclick",showMessage);
</script>
</body>
</html>

提问者:半桶水的好人 2016-11-01 16:01

个回答

  • 慕粉4199060
    2016-11-01 17:10:02
    已采纳

    var eventUtil = {

    // 添加事件 element是给谁添加事件  type是事件类型  handler是事件函数

    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] = null;

    }

    }

    }


  • qq_若相惜卟弃_3
    2016-11-02 09:27:49

    IE11 已经不支持attachEvent了