Se Declaração de não trabalhar com E (&&) Operator
-
18-09-2019 - |
Pergunta
Eu estou tendo um momento difícil escrever o que parece deve ser um simples if! Eu preciso dele para dizer se mod não é igual a, b ou c - então fazer isso. Aqui está o que eu estava tentando, mas não tiveram sucesso:
var mod = CURRENT_MODULE_ID;
if (mod != "5827289" && mod != "5195103" && mod != "5181422") {
doSomething();
}
Quando eu digito isso em meu editor ele diz que há um erro, especificamente que "O nome da entidade deve seguir a 'e' imediatamente na referência de entidade." .. e não está funcionando quando eu ir para teste.
Qualquer ajuda é apreciada !!
UPDATE: O url: esber.squarespace.com
O script completo:
<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>
Eu quero que cada página no site para redirecionar automaticamente no carregamento da página para a página de verificação, a menos que seja a página de verificar (/ verificar), a página "Você não está verificado" (/ não-verificado), ou o login página (/ login) - a menos que o usuário já verificados, definindo os sessvars, então eles podem continuar para a página inicial
.Para testar essa eu vou para esber.squarespace.com e clique em um dos itens do menu à direita (este menu acabaria por ser escondido quando eu terminar com a página) - quando eu tento ir para outra página sem veriying minha idade primeiro eu deveria ser redirecionado de volta para o / verificar página, mas isso acontecer is not.
Se eu revisar o script:
<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>
, em seguida, ele funciona muito bem (?)
Solução
Tente isto:
// <![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 isso não funciona, basta deixar o código lá para um pouco, para que possamos depurá-lo diretamente em seu site
Outras dicas
Enrole seu script em uma seção CDATA.
<script type="text/javascript">
<![CDATA[
// script here
]]>
</script>
Eu tentei exatamente o mesmo código que o seu e ele funciona muito bem:
function doSomething() {alert("doing");}
var CURRENT_MODULE_ID = 5195103000;
var mod = CURRENT_MODULE_ID;
if (mod != "5827289" && mod != "5195103" && mod != "5181422") {
doSomething();
}
Ele fez 'doSomething'. Quando o valor é alterado para 5195103, nada acontece que é correta ??p>
O editor de lado, o que é o erro de script quando você executá-lo e qual é o browser que utilizou? Eu suspeito que poderia ser um erro em outro lugar ou talvez relacionado com CURRENT_MODULE_ID
?
Você está embutindo este javascript em um documento XML?
Parece que o documento XML não está bem formado, talvez porque o & deve ser escapado como &
O javascript por si parece bem também me
Tente:
var mod = CURRENT_MODULE_ID;
if (mod != "5827289" && mod != "5195103" && mod != "5181422") {
doSomething();
}
Você vai descobrir que caminho se as necessidades javasciprt ser escapado
Editar em resposta ao comentário:
Tente o seguinte:
<script type="text/javascript">
<![CDATA[
var mod = CURRENT_MODULE_ID;
if (mod != "5827289" && mod != "5195103" && mod != "5181422") {
doSomething();
}
]]>
</script>
Parece que seu editor apenas pensa que você está trabalhando com um documento XML. Você já tentou realmente executar isso em um navegador? Em caso afirmativo, o navegador também dar um erro?
Você está tentando comparar o ID como uma string ou valor? Você experimentá-lo sem aspas?
var mod = CURRENT_MODULE_ID;
if (mod != 5827289 && mod != 5195103 && mod != 5181422) {
doSomething();
}
ou outro método seria a partida uso
var mod = CURRENT_MODULE_ID;
if (!mod.match("5827289|5195103|5181422")) {
doSomething();
}
Eu tenho esse erro dentro de uma seção de script em um arquivo XSL.
Entity 'e' não definido
Eu adaptei a resposta acima dentro do meu roteiro e funcionou.
Observe a seção CDATA no segmento de código abaixo
<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>