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

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下就不会实现。