<script>
function doit(evt){
  var obj = window.event?event.srcElement:evt.target;
  alert(obj.value)
}
</script>
<input type="button" value="btn1" onclick="doit(event);">
<input type="button" value="btn2" onclick="doit(event);">这个地方 onclick 用的 doit 为什么还需要参数呢
onclick事件 调用的函数 doit 里的参数 event 这时候是什么?变量?event对象?

解决方案 »

  1.   

    业务上需要参数里面的某些值参与
    event对象,你下个firebug看看里面都有什么东西就知道了
      

  2.   

    兼容性的处理,标准的DOM事件中,arguments[0]即传入的第一个参数被当作事件参数即event对象,但IE的解决方式是把event作为了window对象的属性。
    这意味着FF等浏览器需要传入一个参数(本例中是evt)、而IE直接使用无参方法,这样得到的event对象。然后是标准的event使用target作为事件当前目标(涉及到冒泡与捕获,姑且这么认为),而IE的实现是srcElement,故上面的代码可以拆成var event=evt?evt:window.event;
    var taget=event.taget||event.srcElement;
      

  3.   

    更正 var target=event.target||event.srcElement;