3

我很難寫出似乎應該是一個簡單的if語句!我需要說的是,如果mod不等於a,b或c,那麼就這樣做。以下是我試圖但並不成功:如果聲明不適用於(&&)運算符

var mod = CURRENT_MODULE_ID; 
if (mod != "5827289" && mod != "5195103" && mod != "5181422") { 
    doSomething(); 
} 

當我鍵入此爲我的編輯器,它說有錯誤,特別是「實體名稱必須緊跟在‘&’在實體引用。 「 ..並且在我去測試時不工作。

任何幫助表示讚賞!


UPDATE: 的網址:esber.squarespace.com

完整的腳本:

<script type="text/javascript" src="/storage/scripts/sessvars.js"></script> 
<script type="text/javascript"> 
<![CDATA[ 

onload=function(){ 
sessvars.browserConfirmation?'none':''; 
sessvars.ageConfirmation?'none':''; 
}; 

var mod = Squarespace.Constants.CURRENT_MODULE_ID; 
if (mod != "5827289" && mod != "5195103" && mod != "5181422") { 
    if(sessvars.ageConfirmation != "yes"){ 
     window.location = "/verify/"; 
    }; 
}; 

]]> 
</script> 

我想在網站的每一頁,在頁面加載自動重定向到驗證頁面,除非它是驗證頁面(/驗證),「你沒有驗證」頁面(/未驗證)或登錄頁面(/登錄) - 除非用戶已經通過設置sessvars進行驗證,那麼它們可以繼續進入主頁。

爲了測試這個,我去esber.squarespace.com並點擊右邊的一個菜單項(當我完成頁面時,這個菜單最終會被隱藏) - 當我嘗試去另一個頁面沒有首先檢查我的年齡,我應該重定向到/ verify頁面,但是這並不是如此。

如果我修改劇本:

<script type="text/javascript" src="/storage/scripts/sessvars.js"></script> 
<script type="text/javascript"> 

onload=function(){ 
sessvars.browserConfirmation?'none':''; 
sessvars.ageConfirmation?'none':''; 
}; 

var mod = Squarespace.Constants.CURRENT_MODULE_ID; 
if (mod != "5827289") { 
    if(sessvars.ageConfirmation != "yes"){ 
     window.location = "/verify/"; 
    }; 
}; 

</script> 

然後正常工作

+2

澄清CDATA部分:也就是說,如果「國防部」比其他任何東西,B,C - 然後做一些事情。 – VUELA 2010-02-05 03:03:51

+0

你是如何獲得國防部號碼?我瀏覽了站點中的頁面,並且沒有一個頁面的CURRENT_MODULE_ID與您正在測試的MOD編號相匹配。除了主要的網頁。 – 2010-02-05 03:36:15

+0

它實際上是Squarespace.Constants.CURRENT_MODULE_ID; ......它們應該都以#modulePage1234567的最終形式出現在源代碼中。 – VUELA 2010-02-05 03:49:56

回答

6

試試這個:

// <![CDATA[ 

onload=function(){ 
sessvars.browserConfirmation?'none':''; 
sessvars.ageConfirmation?'none':''; 
}; 

var mod = Squarespace.Constants.CURRENT_MODULE_ID; 
if (mod != "5827289" && mod != "5195103" && mod != "5181422") { 
    if(sessvars.ageConfirmation != "yes"){ 
     window.location = "/verify/"; 
    }; 
}; 

// ]]> 

如果這也不行,見好就收的代碼中有一個位,使我們可以直接在您的網站上進行調試

+0

這工作很好!非常感謝!我需要//添加! – VUELA 2010-02-05 04:28:48

+0

HTML文檔無法識別CDATA標記,因此您需要將它們註釋掉以使HTML解析器正常工作。對於CSS代碼,您應該已經完成​​了/ * <![CDATA [*// *]]> */ – 2010-02-05 04:32:34

+0

是合理的 - 非常感謝您的提示!以爲我瘋了! – VUELA 2010-02-05 04:37:37

0

這聽起來像你的編輯只是認爲你有一個XML文檔的工作(?)。你有沒有試過在瀏覽器中實際運行它?如果是這樣,瀏覽器是否也出現錯誤?

+0

嗨雷克斯!我可以保存它,但是當我測試頁面時,它不起作用。頁面是在:esber.squarespace.com 我想設置一個基本的年齡驗證表格,這部分腳本應該重定向到年齡驗證頁面,除非他們在這三個頁面中的任何一個指定的mod變量。 – VUELA 2010-02-05 03:07:13

+0

其實,是的,它看起來像CMS編輯器不允許我保存它。 – VUELA 2010-02-05 03:11:04

1

您是否將此javascript嵌入到xml文檔中?

這聽起來像XML文檔格式不正確,也許是因爲&應該被轉義爲&

本身的JavaScript看起來很好過我

嘗試:

var mod = CURRENT_MODULE_ID; 
if (mod != "5827289" &amp;&amp; mod != "5195103" &amp;&amp; mod != "5181422") { 
    doSomething(); 
} 

你會發現這種方式是否需要逃避javasciprt

編輯迴應通訊耳鼻喉科:

嘗試以下操作:

<script type="text/javascript"> 
<![CDATA[ 
var mod = CURRENT_MODULE_ID; 
if (mod != "5827289" && mod != "5195103" && mod != "5181422") { 
    doSomething(); 
} 
]]> 
</script> 
+0

我正在使用在線CMS,它只是給我一個框,以輸入中的其他內容。我回來的錯誤看起來像是考慮它xml?: 「無法解析您的網站標題代碼。您插入無效的XML嗎?錯誤:文檔行17錯誤:實體名稱必須緊跟' '嵌套異常:實體名稱必須緊跟在實體引用中的'&'後面。「 – VUELA 2010-02-05 03:13:44

+0

在這種情況下,可能會驗證文本是否爲有效的xhtml。您可能需要包含腳本標記並且需要爲javascript進行轉義。我已將我的建議修復程序作爲對此響應的編輯 – 2010-02-05 03:17:10

+0

我試圖用& &進行交換 - 並且錯誤消息消失,但該功能仍然無效。我還注意到,當我回到編輯器窗口時,它會回到&&。 – VUELA 2010-02-05 03:18:52

1

我試過完全相同的代碼爲你工作得很好:

function doSomething() {alert("doing");} 
var CURRENT_MODULE_ID = 5195103000; 
var mod = CURRENT_MODULE_ID; 
if (mod != "5827289" && mod != "5195103" && mod != "5181422") { 
    doSomething(); 
} 

它沒有 'DoSomething的'。當值更改爲5195103時,沒有任何反應是正確的

編輯器不在,運行時出現什麼腳本錯誤?您使用的瀏覽器是什麼?我懷疑這可能是其他地方的錯誤,或者可能與CURRENT_MODULE_ID有關?

+0

已經在Mac Firefox 3.5,Safari 4 – VUELA 2010-02-05 03:31:36

4

將腳本包裝在CDATA部分。

<script type="text/javascript"> 
<![CDATA[ 

// script here 

]]> 
</script> 
0

您是否嘗試將ID作爲字符串或值進行比較?你沒有引號試過嗎?

var mod = CURRENT_MODULE_ID; 
if (mod != 5827289 && mod != 5195103 && mod != 5181422) { 
    doSomething(); 
} 

或另一種方法是使用匹配

var mod = CURRENT_MODULE_ID; 
if (!mod.match("5827289|5195103|5181422")) { 
    doSomething(); 
} 
+0

中測試過這個頁面,我嘗試過不用引號,但還沒有嘗試過匹配方法。 – VUELA 2010-02-05 03:51:23

0

我在XSL文件的腳本部分收到了此錯誤。

Entity '&' not defined

我改編了我的腳本中的上述答案,它的工作。

注意在代碼段下面

<script> 
    var Quantity860=<xsl:value-of select="$QuantityOrdered_860" />; 
    var Quantity850=<xsl:value-of select="$QuantityOrdered_850" />; 
    var QuantityToReceive860=<xsl:value-of select="$QuantityLeftToReceive_860" />; 

    if(parseFloat(Quantity860.textContent) !== parseFloat(Quantity850.textContent) <![CDATA[ && ]]> parseFloat(QuantityToReceive860.textContent) !== parseFloat(Quantity850.textContent)) 
    { 
     Quantity860.style.color="#FF6347"; 
     Quantity850.style.color="#FF6347"; 
     QuantityToReceive860.style.color="#FF6347"; 
    } 
</script>