将OR运算符添加到quizz表单使其接受任何答案

时间:2015-06-07 19:37:43

标签: javascript jquery if-statement

在尝试创建使用Javascript验证的问题表单时,我遇到了一个奇怪的问题:

如果我像这样编写验证:

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

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

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

..并且突然之间写入输入表单的任何内容都被接受为答案。

3 个答案:

答案 0 :(得分:3)

正确的写作方式是:

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

无法将条件(x === y || x === z)合并为x === y || z并期望获得相同的结果。

答案 1 :(得分:1)

Javascript中的任何非空字符串都是true(是的,甚至是字符串"false")。由于"secondAnswer不是空的,因此评估为trueOR编辑任何其他条件将导致true

由于typedValue的优先级高于typedValue,因此您错过了&&与此文字的比较,并且可能是||比较的括号:

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

答案 2 :(得分:0)

扩展阿卡什·普拉丹回答你可以写

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

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

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