0

我有一个用于确认的 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 来做同样的事情,唯一的区别是我可以在文档就绪功能上获得警报。

4

2 回答 2

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;
};
于 2012-10-19T16:00:46.107 回答
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>​

理想情况下,您不会onclick在 html 中使用该属性。您可以通过使用事件侦听器将其纯粹保留在 javascript 中,这更清晰,并且避免了污染标记。如果你给注销链接一个id,你可以这样做:

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

这将在点击时调用该函数。

于 2012-10-19T16:07:00.770 回答