自定義「登錄」和「退出」切換鏈接的代碼段代碼適用於舊的無響應模板,但在響應模板上時表現不佳。當它寫入html行時,它實際上將<body>
中的所有內容替換爲代碼中引用的<a>
。JQuery登錄註銷語句代碼無法正常工作
這裏是的Bigcommerce被許多網上的原始的自定義代碼片段(無響應主題):
<li class="loginLogout"><span>
<script type="text/javascript">
//<![CDATA[
var GlobalFname="%%GLOBAL_CurrentCustomerFirstName%%";
if (GlobalFname!="" && GlobalFname!="Guest")
{
//Customer is Logged On
document.writeln ('<a href="%%GLOBAL_ShopPath%%/login.php?action=logout">Sign out</a>');
} else {
//Customer is not Logged On
document.writeln ('<a href="%%GLOBAL_ShopPath%%/login.php">Sign in</a>');
};
//]]>
</script>
</span> </li>
我不知道爲什麼它會取代<body>
用這裏面的一切.... "document.writeln...."
因此,你所得到的只是網頁上的實際鏈接,就是這樣。
這裏是我試圖實現,並與只有「一個警告」的工作原理:
它不會改變「註銷」鏈接,直到您刷新頁面,或轉到其他頁。變量%%GLOBAL_CurrentCustomerFirstName%%
確實會改變,但jquery不會在「else」語句中加載新鏈接。
這裏是我已經得到了,除了上述這個問題的工作代碼(它不是<li>
像第一里面,取而代之的則是剛剛在自己的頁面上):
<div id="TopMenu">
<ul>
<li class="loginLogout login">
<div class="loginContainer">
</div>
</li>
</ul>
</div>
<script type="text/javascript">
var loginString = '<a href="%%GLOBAL_ShopPath%%/login.php"><i class="icon-lock"></i><span class="narrow_hide">Login</span></a>';
var logoutString = '<a class="logout_link" href="%%GLOBAL_ShopPath%%/login.php?action=logout"><i class="icon-lock"></i><spanclass="narrow_hide">Logout</span></a>';
var GlobalFname = "%%GLOBAL_CurrentCustomerFirstName%%";
if(GlobalFname == "") {
$("#TopMenu .loginContainer").html(loginString);
}
else if(GlobalFname == "Guest") {
$("#TopMenu .loginContainer").html(loginString);
}
else {
$("#TopMenu .loginContainer").html(logoutString);
}
</script>
我將不勝感激。我曾嘗試推行$(document).ready(function()
,甚至試圖:
$(".login_link").hide();
$(".logoutContainer").html(logoutString);
把它的<li><div>
內CDATA內也沒有幫助。
但我想如何使最終的「註銷」/「註銷」鏈接顯示,而不必手動重新加載頁面的損失。感謝您的任何見解!
猜測在這裏工作 - 你正在使用某種我不認識的模板引擎。確保'GlobalFname'的值是你期望的**在你使用它的時候**。我的第一個猜測是,實際的登錄/註銷邏輯直到後來纔會發生,因此您的數據過時了 - 而過時的數據就是您需要刷新的原因。提到你使用的模板引擎會有很大的幫助。 *提示:如果語句正常工作,則它們是JavaScript的一個經過充分測試的部分,不存在已知的錯誤。它總是歸結爲給他們不正確的數據。* –
非常感謝建議@JeremyJStarcher!我正在使用Bigcommerce。他們有他們自己的登錄/註銷片段,但是它根本不可編輯,因爲它在全局變量中。過去這種做法主要是針對舊的無響應主題,但在響應式主題中,當您想進行自定義時,這裏發生了一些變化,而且仍然是不可編輯的。真正奇怪的是,第一個代碼片段實際上是如何去除body標籤內的所有內容,然後在響應主題中插入一個鏈接。所以有些事情不太正確。 – user3550093
當底部代碼片段處於活動狀態,並且您單擊action = logout鏈接時,在源代碼中,GlobalFname已更改回「Guest」。所以它似乎刷新了數據,但由於某種原因,它不會重寫if語句中的鏈接。也許我需要傳遞一些Ajax代碼,但我還沒有想出如何做到這一點,雖然。非常感謝您的意見。 – user3550093