如果声明不与(&&)操作员工作
-
18-09-2019 - |
题
我有一个很难写了什么,似乎应该是一个简单的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" && mod != "5195103" && 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>