JS中e的使用

wsy87217 2012-02-22 05:32:19

<script>
window.onload = function() {
var a = document.getElementById("test");

a.onclick = function(e) {
alert("跳不了");

stopDefault(e);
}
}

function stopDefault( e ) {
if ( e && e.preventDefault )
e.preventDefault();
else {
window.event.returnValue = false;
}

return false;
}
</script>

<a href="www.baidu.com" id="test">点我</a>



<script>
function stopDefault( e ) {
if ( e && e.preventDefault )
e.preventDefault();
else {
window.event.returnValue = false;
}

return false;
}

function test(e) {
alert("跳不了");

stopDefault(e);
}
</script>
<a href="www.baidu.com" id="test" onclick="test(e)">点我</a>


第一段代码可以成功阻止a标签的默认事件,但第二段代码就报undefined e的错误,为什么啊?
...全文
603 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wsy87217 2012-02-23
  • 打赏
  • 举报
回复
还是迷迷糊糊的,不过还是谢谢各位了!
jusfr 2012-02-23
  • 打赏
  • 举报
回复
<a href="www.baidu.com" id="test" onclick="test(e)">点我</a>
在标准的事件模型中,argument[0]即你用的这个"e"会被当作事件数据载体,会没有问题,但IE的实现很特殊,传入"e"与传入"event"是有很大区别的,"e"未在其他位置声明过便等于传入一个undefined,传"event"等于引用window.event对象,于是IE下就不会实现。
wsy87217 2012-02-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 net_lover 的回复:]
要写成
<a href="www.baidu.com" id="test" onclick="test(event);">点我</a>
[/Quote]
嗯出来了~但不知道为什么这么用~


[Quote=引用 2 楼 zabcd117 的回复:]

你的test这样定义
JScript code

function test(){
alert(arguments.callee.caller);
}


然后你在各个浏览器下看看输出,应该明白为啥必须要传event了,chrome和opera下也支持直接获取window.event了哦。
[/Quote]
不好意思我是新手,弹出的信息没看懂。。。

[Quote=引用 3 楼 p2227 的回复:]

装个firebug就什么都看得出来了,e只是一个常用的表示事件的形参,就像循环里面喜欢用i
[/Quote]
我这有firebug,要怎么看呢?
我知道e是一个参数,但为什么第一段代码中可以用e当形参,第二段不行呢?
p2227 2012-02-22
  • 打赏
  • 举报
回复
装个firebug就什么都看得出来了,e只是一个常用的表示事件的形参,就像循环里面喜欢用i
zabcd117 2012-02-22
  • 打赏
  • 举报
回复
你的test这样定义

function test(){
alert(arguments.callee.caller);
}

然后你在各个浏览器下看看输出,应该明白为啥必须要传event了,chrome和opera下也支持直接获取window.event了哦。
孟子E章 2012-02-22
  • 打赏
  • 举报
回复
要写成
<a href="www.baidu.com" id="test" onclick="test(event);">点我</a>

87,922

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧