Javascript OR变量不起作用

时间:2015-08-12 20:10:30

标签: javascript

我正在尝试使用OR来为我正在制作的游戏提供多个案例响应。

代码如下所示:

  if (password1 == ("kimmy gibbler"||"Kimmy Gibbler"||"kimmy Gibbler"||"Kimmy gibbler"))  

{hypeDocument.functions().addPoint(hypeDocument, element, event);

hypeDocument.showSceneNamed('AllCards')console.log("correct!")return;

} else{document.getElementById("password1").childNodes[1].value ="";console.log("no Dice!”);

};

当用户将其输入到输入字段时,是否有人建议为什么只接受列表中的第一个响应(“kimmy gibbler”)?

4 个答案:

答案 0 :(得分:1)

两个字符串OR' d像这样:

"a" || "b"

将始终解析为" a"。

您正在寻找的是:

if (password1 == "kimmy gibbler"
 || password1 == "Kimmy Gibbler"
 || password1 == "kimmy Gibbler"
 || password1 == "Kimmy gibbler")

答案 1 :(得分:0)

您可以将所有可接受的短语添加到数组中,然后使用Array.some

var phrases = ["kimmy gibbler", "Kimmy Gibbler", "kimmy Gibbler", "Kimmy gibbler"];

var isValid = phrases.some(function(phrase) { return phrase == password1 });

编辑:感谢@ElGavilan - Array.some已添加到ECMAScript 5中,因此其支持可能会受到浏览器的限制。

答案 2 :(得分:0)

也许用这些值创建一个数组,然后用.indexOf做一个if语句来查看它是否存在于数组中?像这样:

var solutions = ["kimmy gibbler", "Kimmy Gibbler", "kimmy Gibbler", "Kimmy gibbler"]
if (solutions.indexOf(password1) != -1) {
  hypeDocument.functions().addPoint(hypeDocument, element, event);
  hypeDocument.showSceneNamed('AllCards');
  console.log("correct!");
  return;
} else {
  document.getElementById("password1").childNodes[1].value ="";
  console.log("no Dice!”);
};

答案 3 :(得分:0)

另一种方法是迭代检查每个答案的一系列好答案。

var acceptable = "kimmy gibbler,Kimmy Gibbler,kimmy Gibbler,Kimmy gibbler".split(",");
isCorrectPassword("kImmy gibbler"); // passed: false
isCorrectPassword("kimmy gibbler"); // passed: true

function isCorrectPassword(attempt){
    var pass = false;
    acceptable.forEach(function(v,i){
        if (attempt === v)
            pass = true;
    })
    console.log("passed:",pass);
    return pass;
}