Domanda

Ho difficoltà a scrivere quella che dovrebbe essere una semplice dichiarazione if!Mi serve per dire se mod non è uguale a, b o c, allora fallo.Ecco cosa stavo provando ma senza successo:

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

Quando lo scrivo nel mio editor, dice che c'è un errore, in particolare che "il nome dell'entità deve seguire immediatamente il" & "nel riferimento entità". ..e non funziona quando vado a testare.

Qualsiasi aiuto è apprezzato!!


AGGIORNAMENTO:L'URL:esber.squarespace.com

La sceneggiatura completa:

<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> 

Desidero che ogni pagina del sito venga reindirizzata automaticamente al caricamento della pagina alla pagina di verifica, a meno che non sia la pagina di verifica (/verify), la pagina "Non sei verificato" (/not-verified) o la pagina di accesso (/ login) - a meno che l'utente non abbia già verificato impostando le sessvars, può continuare con la home page.

Per testarlo, vado su esber.squarespace.com e faccio clic su una delle voci di menu a destra (questo menu verrà eventualmente nascosto quando avrò finito con la pagina) - quando provo ad andare a un'altra pagina senza verificare il mio prima dell'età dovrei essere reindirizzato alla pagina /verify ma ciò non accade.

Se rivedo lo script in:

<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> 

allora funziona bene(?)

È stato utile?

Soluzione

Prova questo:

// <![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/";
   };
};

// ]]>

Se questo non funziona, basta lasciare il codice lì per un po ', in modo da poter eseguire il debug direttamente sul tuo sito web

Altri suggerimenti

Avvolgete il vostro scritto in una sezione CDATA.

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

// script here

]]>
</script>

Ho provato il codice esattamente lo stesso come la tua e funziona benissimo:

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

Lo ha fatto 'doSomething'. Quando il valore è cambiato a 5.195.103, non succede nulla che è corretto

L'editor a parte, qual è l'errore di script quando lo si esegue e che cosa è il browser che hai utilizzato? Ho il sospetto che potrebbe essere un errore altrove o forse relativi a CURRENT_MODULE_ID?

Stai incorporando questo javascript in un documento XML?

Sembra che il documento XML non è ben formato, forse perché l'& dovrebbero essere preceduti da &

Il javascript da solo guarda bene anche me

Prova:

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

Lo scoprirete in questo modo se il javasciprt ha bisogno di essere sfuggito

Modifica in risposta al commento:

Provare quanto segue:

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

Sembra che il tuo editore pensa solo si sta lavorando con un documento XML. Avete provato in realtà l'esecuzione di questo in un browser? In caso affermativo, il browser anche dare un errore?

Stai cercando di confrontare l'ID come una stringa o un valore? Hai provato senza le virgolette?

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

o un altro metodo sarebbe quello di utilizzare la corrispondenza

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

Ho ricevuto questo errore all'interno di una sezione di script in un file XSL.

Entità '&' non definita

Ho adattato la risposta sopra all'interno del mio script e ha funzionato.

Nota la sezione CDATA nel segmento di codice sottostante

<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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top