读书人

JS中e的使用解决办法

发布时间: 2012-03-20 14:01:11 作者: rapoo

JS中e的使用

JScript code
    <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>


JScript code
<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的错误,为什么啊?

[解决办法]
要写成
<a href="www.baidu.com" id="test" onclick="test(event);">点我</a>
[解决办法]
你的test这样定义
JScript code
function test(){    alert(arguments.callee.caller);}
[解决办法]
装个firebug就什么都看得出来了,e只是一个常用的表示事件的形参,就像循环里面喜欢用i
[解决办法]
<a href="www.baidu.com" id="test" onclick="test(e)">点我</a>
在标准的事件模型中,argument[0]即你用的这个"e"会被当作事件数据载体,会没有问题,但IE的实现很特殊,传入"e"与传入"event"是有很大区别的,"e"未在其他位置声明过便等于传入一个undefined,传"event"等于引用window.event对象,于是IE下就不会实现。

读书人网 >JavaScript

热点推荐