2015-06-07 74 views
1

我在试图创建一个使用Javascript验证问题表单时,一个奇怪的问题:如果我写我的验证这样添加或运算一个QUIZZ形式使其接受任何答案

if (typedValue === "myAnswer" && clearedLevels === 1){doStuff} 

一切正常。但我想创建多个正确答案,所以我写:

if (typedValue === "myAnswer"||"secondAnswer" && clearedLevels === 1){doStuff} 

..和所有写入输入形式的东西突然被接受的答案。

回答

3

写它的正确的方法是:

if ((typedValue === "myAnswer" || typedValue === "secondAnswer") && clearedLevels === 1) { doStuff() } 

不能作为x === y || z结合条件(x === y || x === z),并期望相同的结果。

+0

非常感谢! – Antti

1

Javascript中的任何非空字符串是true(是的,即使是字符串"false")。由于"secondAnswer不是空的,因此其评估为true,并且OR与任何其他条件编辑将导致true

你缺少的typedValue这个字面比较,想必,围绕typedValue比较括号,因为&&的优先级高于||

if ((typedValue === "myAnswer" || typedValue === "secondAnswer") && 
    clearedLevels === 1) { 
    // doStuff 
} 
0

延伸阿卡什·普拉丹回答,您可以编写

if (typedValue == "myAnswer" || typedValue == "secondAnswer" && clearedLevels == 1) { doStuff() } 

但由于&& has precedence over the || operator它会评估

if (typedValue == "myAnswer" || (typedValue == "secondAnswer" && clearedLevels == 1)) { doStuff() } 
相关问题