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

本文探讨了在不同浏览器环境下如何正确处理事件对象的问题,特别是在Firefox中使用自定义事件处理函数时的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    <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.οnclick=function(){fn(event)}为什么我把代码放在这里不能执行,而放在id为div1的html标签内就能执行。



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

-------------------------------------------------------------------------------------------------------
<div id="div1" οnclick="fn(event)" style="width:200px; height:200px; background-color:#0CC">为什么这样就行呢,因为火狐在处理这个οnclick="fn(event)"时,会自动的把这个 代码转化为οnclick=function(event){fn(event)} 。在用FireBug调试的时候会发现是这样的。
注意:里面的参数一定要是event才行,要不然也会报错。

转载于:https://www.cnblogs.com/yangdejin/archive/2011/09/26/2191912.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值