Wenn Statement funktioniert nicht mit Und Operator (&&)
-
18-09-2019 - |
Frage
Ich habe eine harte Zeit mit dem Schreiben, was sollte eine einfache, wenn Aussage scheint! Ich muss es sagen, wenn mod nicht a, b oder c nicht gleich - dann dies tun. Hier ist, was ich versuchte, aber unterlegen sind:
var mod = CURRENT_MODULE_ID;
if (mod != "5827289" && mod != "5195103" && mod != "5181422") {
doSomething();
}
Als ich dies in meine Editor eingeben sagt es ein Fehler ist, und zwar, dass „Der Entitätsname der‚&‘in der Entity-Referenz unmittelbar folgen müssen.“ .. und funktioniert nicht, wenn ich auf Test gehen.
Jede Hilfe ist willkommen !!
UPDATE: Die url: esber.squarespace.com
Das vollständige Skript:
<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>
Ich möchte jede Seite der Website automatisch auf die überprüfen, Seite auf Seite Last umgeleitet, es sei denn, es wird die Seite (/ verify) überprüfen ist, die „Sie sind nicht überprüft“ Seite (/ nicht-überprüft), oder den Login Seite (/ login) -. es sei denn, der Benutzer bereits durch die Einstellung der sessvars prüft, dann können sie auf der Homepage weiter auf
das ich esber.squarespace.com und klicken Sie auf einen gehen Um zu testen, die Menüpunkte auf der rechten Seite (in diesem Menü schließlich ausgeblendet werden würde, wenn ich mit der Seite fertig bin) - wenn ich versuche, auf eine andere Seite zu gehen ohne veriying mein Alter zuerst sollte ich wieder auf die umgeleitet werden / verify Seite, aber das ist nicht passiert.
Wenn ich revidieren das Skript:
<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>
dann es funktioniert gut (?)
Lösung
Versuchen Sie folgendes:
// <![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/";
};
};
// ]]>
Wenn das nicht funktioniert, lassen Sie einfach den Code dort für ein wenig, so dass sie es direkt auf Ihrer Website debuggen können
Andere Tipps
Wickeln Sie Ihren Skript in einem CDATA-Abschnitt.
<script type="text/javascript">
<![CDATA[
// script here
]]>
</script>
Ich habe versucht, die genau die gleichen Code wie bei Ihnen und es funktioniert gut:
function doSomething() {alert("doing");}
var CURRENT_MODULE_ID = 5195103000;
var mod = CURRENT_MODULE_ID;
if (mod != "5827289" && mod != "5195103" && mod != "5181422") {
doSomething();
}
Es hat 'doSomething'. Wenn der Wert auf 5195103 geändert wird, geschieht nichts, was richtig ist
Der Editor zur Seite, was ist der Skriptfehler, wenn Sie es ausführen und was der Browser Sie verwendet? Ich vermute, es könnte ein Fehler sein, an anderer Stelle oder vielleicht CURRENT_MODULE_ID
zu tun?
Sind Sie das Javascript in einem XML-Dokument einbetten?
Es klingt wie das XML-Dokument nicht gut ausgebildet ist, vielleicht, weil die & sollte als &
entwertet werdenDie Javascript selbst sieht gut zu mir
Versuchen:
var mod = CURRENT_MODULE_ID;
if (mod != "5827289" && mod != "5195103" && mod != "5181422") {
doSomething();
}
Sie werden auf diese Weise herausfinden, ob die javasciprt zu entkommen muss
In Antwort auf Kommentar:
Versuchen Sie Folgendes:
<script type="text/javascript">
<![CDATA[
var mod = CURRENT_MODULE_ID;
if (mod != "5827289" && mod != "5195103" && mod != "5181422") {
doSomething();
}
]]>
</script>
Es klingt wie nur Editor denkt, dass Sie arbeiten mit einem XML-Dokument. Haben Sie versucht, läuft das eigentlich in einem Browser? Wenn ja, ist auch der Browser einen Fehler geben?
Sind Sie versuchen, die ID als String oder Wert zu vergleichen? Haben Sie versucht, es ohne Anführungszeichen?
var mod = CURRENT_MODULE_ID;
if (mod != 5827289 && mod != 5195103 && mod != 5181422) {
doSomething();
}
oder eine andere Methode wäre Übereinstimmung zu verwenden
var mod = CURRENT_MODULE_ID;
if (!mod.match("5827289|5195103|5181422")) {
doSomething();
}
habe ich diesen Fehler in einem Skript Abschnitt in einer XSL-Datei.
Entity '&' nicht definiert
I geeignet ist, die oben genannte Antwort in meinem Skript und es hat funktioniert.
Beachten Sie den CDATA-Abschnitt in dem Codesegment unterhalb
<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>