【发布时间】:2011-01-13 08:52:00
【问题描述】:
我很难写出看似简单的 if 语句!我需要它来说明 mod 是否不等于 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>
我希望站点中的每个页面在页面加载时自动重定向到验证页面,除非它是验证页面 (/verify)、“您未通过验证”页面 (/not-verified) 或登录page (/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>
然后它工作正常(?)
【问题讨论】:
-
澄清:意思是如果 'mod' 不是 a, b, c - 然后做点什么。
-
你是如何获得模组编号的?我浏览了您网站中的页面,但没有一个页面的 CURRENT_MODULE_ID 与您正在测试的模组编号相匹配。除了主 url 页面。
-
其实是 Squarespace.Constants.CURRENT_MODULE_ID; ...它们都应该以 #modulePage1234567 的最终形式出现在源代码中。
-
我之前做过类似的事情并且效果很好: var mod = Squarespace.Constants.CURRENT_MODULE_ID; var imgColor = "红色"; // 默认 if (mod == "2875590" || mod == "2875610" || mod == "2875616") { imgColor = "Green"; }
标签: javascript content-management-system cdata logical-operators squarespace