我有一个很难写了什么,似乎应该是一个简单的if语句!我需要它说,如果国防部不等于A,B或C - 然后做到这一点。以下是我试图但并不成功:

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

当我键入此为我的编辑器,它说有错误,特别是“实体名称必须立即在实体引用遵循‘&’。” ..和当我去测试是行不通的。

任何帮助理解!!


更新: 的网址: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> 

我想在网站的每一页,在页面加载自动重定向到验证页面,除非是验证页面(/验证)中,“你是不是验证”页面(/不被验证),或登录页(/登录) - 。除非已经通过设置sessvars验证了用户,则他们可以继续到网页

要测试这个我去esber.squarespace.com并在右键点击一个菜单项(当我与页面做这个菜单最终会被隐藏) - 当我尝试去到另一个页面没有veriying我这个年龄首先我应该被重定向回/验证页面但心不是发生了。

如果我修改脚本:

<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();
}

它确实 'doSomething的'。当值被改变为5195103,什么也没有发生这是正确的

在编辑器之外,有什么脚本错误,当你运行它,什么是您使用的浏览器?我怀疑这可能是在其他地方或许与CURRENT_MODULE_ID错误?

您在XML文档中嵌入这个JavaScript?

这听起来像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文档的工作。你试过实际上在浏览器中运行的呢?如果是这样,浏览器也给出一个错误?

您想比较ID字符串或价值?你试试不加引号?

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

或另一种方法将是使用匹配

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