我有一个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来做同样的事情,唯一的区别就是我可以对文档就绪功能发出警报。
答案 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);
这将在点击时调用该功能。