我正在尝试使用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”)?
答案 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;
}