日期:2014-05-16  浏览次数:20332 次

onclick事件执行的一个函数
<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对象?


------解决方案--------------------
业务上需要参数里面的某些值参与
event对象,你下个firebug看看里面都有什么东西就知道了
------解决方案--------------------
兼容性的处理,标准的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;