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 (?)

Était-ce utile?

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" &amp;&amp; mod != "5195103" &amp;&amp; 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>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top