Вопрос

Мне трудно написать то, что, по-видимому, должно быть простым утверждением if!Мне нужно, чтобы это указывало, если mod не равен a, b или c - тогда сделайте это.Вот что я пытался сделать, но безуспешно:

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

Когда я ввожу это в свой редактор, он сообщает об ошибке, в частности о том, что "Имя объекта должно сразу следовать за "&" в ссылке на объект". ..и не работает, когда я иду тестировать.

Любая помощь приветствуется!!


Обновить:URL-адрес: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> 

Я хочу, чтобы каждая страница сайта автоматически перенаправлялась при загрузке страницы на страницу подтверждения, если только это не страница подтверждения (/ verify), страница "Вы не проверены" (/ not-verified) или страница входа ( / login) - если пользователь уже не прошел проверку, установив 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> 

тогда это работает нормально (?)

Это было полезно?

Решение

Попробуй это:

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

// ]]>

Если это не сработает, просто оставьте код там ненадолго, чтобы мы могли отладить его непосредственно на вашем веб-сайте

Другие советы

Оберните ваш скрипт в раздел CDATA.

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

// script here

]]>
</script>

Я попробовал ТОЧНО такой же код, как у вас, и он работает нормально:

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

Это "кое-что сделало".Когда значение изменяется на 5195103, ничего правильного не происходит

Если оставить в стороне редактор, в чем ошибка скрипта при его запуске и какой браузер вы использовали?Я подозреваю, что это может быть ошибка в другом месте или, возможно, связанная с CURRENT_MODULE_ID ?

Вы встраиваете этот 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>

Похоже, ваш редактор просто думает, что вы работаете с XML-документом.Вы пробовали на самом деле запустить это в браузере?Если да, то выдает ли браузер также ошибку?

Вы пытаетесь сравнить идентификатор как строку или значение?Вы пробовали это без кавычек?

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

или другим методом было бы использовать match

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

Я получил эту ошибку в разделе скрипта в файле XSL.

Сущность '&' не определена

Я адаптировал приведенный выше ответ в своем сценарии, и это сработало.

Обратите внимание на раздел CDATA в приведенном ниже фрагменте кода

<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>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top