您的位置:首页 > Web前端 > JavaScript

将事件写在html中就能执行整体事件,写在js里为什么不能执行?

2011-09-26 16:41 316 查看
<body>
<div id="div1" onclick="fn(event)" style="width:200px; height:200px; background-color:#0CC">
1111
</div>
</body>
</html>
<script type="text/javascript">
var oDiv = document.getElementById("div1")

function fn(event){
alert(event.target.id);
}
//oDiv.onclick=function(){fn(event)}为什么我把代码放在这里不能执行,而放在id为div1的html标签内就能执行。

</script>


解决方法:
以上代码在火狐里确实不行,原因如下:
oDiv.onclick=function(){fn(event)}
这样写,fn(event)的event相当于是实参,而这个event在外面的那个匿名方法里是没有定义的(在IE中是定义了的,就是
window.event这个全局的事件对象),没有定义就是undefined,所以不行。改成
oDiv.onclick=function(event){fn(event)} 就可以了

-------------------------------------------------------------------------------------------------------
<div id="div1" onclick="fn(event)" style="width:200px; height:200px;
background-color:#0CC">为什么这样就行呢,因为火狐在处理这个onclick="fn(event)"时,会自动的把这个
代码转化为onclick=function(event){fn(event)} 。在用FireBug调试的时候会发现是这样的。

注意:里面的参数一定要是event才行,要不然也会报错。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: