主页中的Javascript未触发

时间:2012-10-19 15:57:16

标签: javascript jquery asp.net master-pages

我有一个javascript函数可以确认:

function confirm() {
    var answer = confirm("Are you sure you want to log out?")
    if (answer) {
        return true;
    }

    return false;
} 

在我的链接上我调用了这个函数:

<div class="header">
                <a href="" class="logo"></a>
                <div class="topToolbar">
                    <span><a href="/Logout.aspx" onclick="return confirm();">Log Out</a></span>
                </div>
            </div>

问题是它从不调用javascript函数,试图发出警报而没有得到任何东西。

我甚至尝试用jquery bt来做同样的事情,唯一的区别就是我可以对文档就绪功能发出警报。

2 个答案:

答案 0 :(得分:6)

您应该重命名您的功能。 confirm保留confirm函数:

function shouldContinue() {
    return confirm("Are you sure you want to log out?");
}

然后:

<a href="/Logout.aspx" onclick="return shouldContinue();">Log Out</a>

实际上更精确confirm不是保留关键字。您可以覆盖confirm功能。那就是你做的。除了在这个被覆盖的函数内部,你再次调用它,从而以递归的无限循环结束。

以下是一个如何覆盖它的示例:

window.confirm = function(msg) {
    alert('this is the overriden confirm function');
    return true;
};

答案 1 :(得分:1)

你没有在onclick中调用该函数,你需要重命名该函数,使其不与确认冲突。

logoutMessage = function() {
    var answer = confirm("Are you sure you want to log out?")
    if (answer) {
        return true;
    }

    return false;
} ​

<div class="header">
    <a href="" class="logo"></a>
    <div class="topToolbar">
        <span><a href="/Logout.aspx" onclick="return logoutMessage()">Log Out</a></span>
    </div>
</div>​

理想情况下,您不会在html中使用onclick属性。您可以使用event listener将其保留在javascript中,这样更清晰,并且可以避免污染标记。如果您为注销链接指定了ID,则可以执行以下操作:

document.getElementById("logout").addEventListener("click", logoutConfirm);

这将在点击时调用该功能。