顺序写反了
<!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>
<form name="form1" method="post" action="" >
<input type="button" id="btn" value="注册事件方法" /> 
</form>
<script type="text/javascript">
var obj = document.getElementById("btn");
if(window.addEventListener){ // Mozilla, Netscape, Firefox
   obj.addEventListener( 'click ', alert( '第一个方法(非IE浏览器) '), false);
   obj.addEventListener( 'click ', alert( '第二个方法(非IE浏览器) '), false);
   obj.addEventListener( 'click ', fun3, false);
}
else{ // IE
   obj.attachEvent( 'onclick', function(){alert( '第一个方法(IE浏览器) ');});
   obj.attachEvent( 'onclick', function(){alert( '第二个方法(IE浏览器) ');});
   obj.attachEvent( 'onclick', fun3);
  }
  function fun3(){
    alert("第三个方法(IE浏览器)");
  }
</script>
</body>
</html>

解决方案 »

  1.   

    事件名称是没有空格的,注意粗体部分
    obj.attachEvent(  'onclick ', function(){alert(  '第一个方法(IE浏览器)  ');}); 
    ==>
    obj.attachEvent(  'onclick', function(){alert(  '第一个方法(IE浏览器)  ');}); 
      

  2.   

    在我的本机通过,支持IE与FF<!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 >
    <form name="form1" method="post" action=""  >
    <input type="button" id="btn" value="注册事件方法" / > 
    </form >
    <script type="text/javascript" >
    var obj = document.getElementById("btn");
    if(window.addEventListener){ // Mozilla, Netscape, Firefox
       obj.addEventListener(  'click', function(){alert(  '第一个方法(非IE浏览器)  ')}, false);
       obj.addEventListener(  'click', function(){alert(  '第二个方法(非IE浏览器)  ')}, false);
       obj.addEventListener(  'click', fun3, false);
    }
    else{ // IE
       obj.attachEvent(  'onclick', function(){alert(  '第一个方法(IE浏览器)  ');});
       obj.attachEvent(  'onclick', function(){alert(  '第二个方法(IE浏览器)  ');});
       obj.attachEvent(  'onclick', fun3);
      }
      function fun3(){
        alert("第三个方法(IE浏览器)");
      }
    </script >
    </body >
    </html >
      

  3.   


    <body>
    <form name="form1" method="post" action=""  >
    <input type="button" id="btn" value="注册事件方法" / > 
    </form>
    <script type="text/javascript">
    if(!window.attachEvent && window.addEventListener)
    {
      window.attachEvent = HTMLElement.prototype.attachEvent=
      document.attachEvent = function(en, func, cancelBubble)
      {
        var cb = cancelBubble ? true : false;
        this.addEventListener(en.toLowerCase().substr(2), func, cb);
      };
    }var obj = document.getElementById("btn");
    obj.attachEvent('onclick', function(){alert(  '第一个方法(IE浏览器)  ');});
    obj.attachEvent('onclick', function(){alert(  '第二个方法(IE浏览器)  ');});
    obj.attachEvent('onclick', fun3);function fun3()
    {
      alert("第三个方法(IE浏览器)");
    }
    </script>
      

  4.   

     JGood
     为什么在IE中,添加的事件执行的循序不是按照添加的顺序来的,而是反的。即先执行alert("第三个方法(IE浏览器)");,然后再alert(  '第二个方法(IE浏览器)  ');,最后才alert(  '第一个方法(IE浏览器)  ');??
      

  5.   


    ..
    else{ // IE
      obj.('onclick', function(){alert('第一个方法(IE浏览器)');});
      obj.attachEvent('onclick', function(){alert('第二个方法(IE浏览器)');});
    ..1.首先:
    obj.('onclick',
    应该改为:
     obj.attachEvent
    2.如JGood所示需要把顺序调换1下:<form>
    ..
    </form>
    <script>..</script>否则obj  is null .
    原因不知,但是是在调试的时候发现的。VS 提示 obj is null
      

  6.   

    还有:
    应该是:  obj.addEventListener('click', function() { alert('第一个方法(非IE浏览器)  ') }, false);
      obj.addEventListener('click', function() { alert('第二个方法(非IE浏览器)  ') }, false);
      obj.addEventListener('click', fun3, false);而不是  obj.addEventListener('click', alert('第一个方法(非IE浏览器)'), false);
      obj.addEventListener('click', alert('第二个方法(非IE浏览器)'), false);
      obj.addEventListener('click', fun3, false);基于以上高人的对比得出的。估计是语法问题。
      

  7.   

    将script部分放到<input type="button" id="btn" value="注册事件方法" />  之后,不然获取不到obj当然也可以window.onload中调用上述js部分。