var evt=arguments[0] || window.event
 var ele=evt.srcElement || evt.target
alert(ele);在ie里都可以,但是在ff里按扭可以,为什么checkbox 不行。
等待...

解决方案 »

  1.   

    obj=event.srcElement?event.srcElement:event.target;
    你写的这个就是兼容的代码了。可能是对于FF,event对象必须通过参数传递,而不能直接引用。
    而IE,可以不带参数直接在函数中使用event对象。
      

  2.   

    FF 下是没有event的,只有真正发生了才有.
      

  3.   


    <!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" xml:lang="en" lang="en">
    <head><title>ie&ff</title>
    <script type="text/javascript">
    window.onload=function(){
    document.getElementById("btn3").onclick=aa
    document.getElementById("ck1").onclick=aa
    } function aa(){  
         var evt=arguments[0] || window.event
         var element=evt.srcElement || evt.target  
         alert(element.id)          
    }
     </script>
    </head>
    <body>
    <form>
    <button id="btn3" >按钮</button>
    <input id="ck1" type="checkbox"  />
    <button id="btn4" onclick="aa()">按扭</button>
    </form>
    </body>
    </html>ok了,但是不明白这段代码有什么区别??大虾解释下....
      

  4.   

    arguments[0]  为执行时将事件作为第一个参数传递.
      

  5.   

    不明白的地方 主要是:
      btn3 和 btn4 的调用方式不同,然后在ff里,btn3 是ok的,但是btn4却不行。
      

  6.   

    嗯,因为document.getElementById("btn3").onclick=aa这个是设置了
    当触发onclick事件时触发aa函数...
    就是说
    把aa交给了onclick事件.
    当onclick触发时,系统将触发aa.在FF中如果aa没有参数的话,还会给aa传入参数到arguments[0],就是event对象..而IE event对象则放到了全局变量window.event中...如aa有设置要传入的参数的话,则通过默认函数执行aa,把event传递给默认函数的arguments[0];btn3很显然没有设置aa要传入的参数而btn4则设置了它不传参数即aa()
    btn4要获取到event对象的方法,是通过aa函数找到执行它的函数,然后获取那个函数的arguments[0]简单的表示是
    arguments.callee.caller.arguments[0]