Si Déclaration ne fonctionne pas avec et (&&) Opérateur
-
18-09-2019 - |
Question
Je vais avoir du mal à écrire jusqu'à ce qui semble devrait être une simple instruction if! J'ai besoin de dire si mod ne correspond pas a, b, ou c - puis le faire. Voici ce que je cherchais, mais ont échoué:
var mod = CURRENT_MODULE_ID;
if (mod != "5827289" && mod != "5195103" && mod != "5181422") {
doSomething();
}
Quand je tape ceci dans mon éditeur, il dit qu'il ya une erreur, en particulier que « le nom de l'entité doit immédiatement suivre le « & » dans la référence de l'entité. » .. et ne fonctionne pas quand je vais à tester.
Toute aide est appréciée !!
Mise à jour: L'URL: esber.squarespace.com
Le script complet:
<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>
Je veux que chaque page du site pour rediriger automatiquement la page charge à la page de vérification, à moins que c'est la page de vérification (/ vérifier), le « Vous n'êtes pas vérifié » la page (/ non vérifié), ou la connexion Page (/ login) -. à moins que l'utilisateur a déjà vérifié en définissant les sessvars, ils peuvent continuer à la page d'accueil
Pour tester cela, je vais à esber.squarespace.com et cliquez sur l'un des éléments de menu à droite (ce menu finirait par être caché quand je suis fait avec la page) - quand je tente d'aller à une autre page sans veriying mon âge je devrais d'abord être redirigés vers / page de vérification mais isnt passe.
Si je révise le script:
<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>
il fonctionne très bien (?)
La solution
Essayez ceci:
// <![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/";
};
};
// ]]>
Si cela ne fonctionne pas, il suffit de laisser le code là pour un peu, afin que nous puissions déboguer directement sur votre site
Autres conseils
Enveloppez votre script dans une section CDATA.
<script type="text/javascript">
<![CDATA[
// script here
]]>
</script>
J'ai essayé le EXACT même code que le vôtre et il fonctionne très bien:
function doSomething() {alert("doing");}
var CURRENT_MODULE_ID = 5195103000;
var mod = CURRENT_MODULE_ID;
if (mod != "5827289" && mod != "5195103" && mod != "5181422") {
doSomething();
}
Il a fait 'doSomething'. Lorsque la valeur est modifiée à 5.195.103, rien ne se passe qui est correct
L'éditeur de côté, ce qui est l'erreur de script lorsque vous exécutez et quel est le navigateur que vous utilisez? Je soupçonne que cela pourrait être une erreur ailleurs ou liée à CURRENT_MODULE_ID
peut-être?
Êtes-vous intégrez ce javascript dans un document XML?
Il semble que le document XML est pas bien formé, peut-être parce que le & devrait être réussi à sortir et
Le javascript par lui-même semble bien moi aussi
Essayez:
var mod = CURRENT_MODULE_ID;
if (mod != "5827289" && mod != "5195103" && mod != "5181422") {
doSomething();
}
Vous trouverez cette façon si le javasciprt doit être échappé
Modifier en réponse à un commentaire:
Effectuez les opérations suivantes:
<script type="text/javascript">
<![CDATA[
var mod = CURRENT_MODULE_ID;
if (mod != "5827289" && mod != "5195103" && mod != "5181422") {
doSomething();
}
]]>
</script>
Il semble que votre éditeur pense juste que vous travaillez avec un document XML. Avez-vous essayé en fait d'exécuter ce dans un navigateur? Si oui, le navigateur donne également une erreur?
Vous essayez de comparer l'ID comme une chaîne ou une valeur? Avez-vous essayé sans guillemets?
var mod = CURRENT_MODULE_ID;
if (mod != 5827289 && mod != 5195103 && mod != 5181422) {
doSomething();
}
ou une autre méthode serait d'utiliser correspondance
var mod = CURRENT_MODULE_ID;
if (!mod.match("5827289|5195103|5181422")) {
doSomething();
}
Je suis cette erreur dans une section de script dans un fichier XSL.
Entité '&' non définie
Je la réponse ci-dessus adapté dans mon scénario et cela a fonctionné.
Notez la section CDATA dans le segment de code ci-dessous
<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>