2012-10-19 32 views
0

我有一個JavaScript功能進行確認:的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

儘管已回答,但請注意,您正在遞歸調用它 – Eagle

回答

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; 
}; 
+0

謝謝您解決了它:) – Zaki

+0

'+ 1'^_ ^。我愚蠢的回答.... – Neal

+0

不是它保留。實際上你可以重載它。嘗試在螢火蟲上._。 – Eagle

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); 

,將調用上點擊的功能。

+0

回覆'confirm(...)'怎麼回事? :-P – Neal