请你解释一下并给出正确答案:
<p id="show"></p>
<script>
var a = "word1";
var b = "word2";
do {
color = prompt("Write a word1 or word2 to get out of loop", "");
} while (color != a || color != b);
document.getElementById("show").innerHTML=color;
</script>
当我删除'b'选项并且只保留'a'选项时,它会起作用。那么如何将它用于多种选择呢?另外,如果你有一个解决方案来保持简单,例如我有15个选项,那就太棒了!
谢谢
答案 0 :(得分:4)
检查某件事是否不是一件事,或不是另一件事,将永远是真的。我想你想要&&
而不是||
。
更一般地说,如果你有很多选择,那么如果值是字符串(或易于字符串化的东西),那么一个好的模式是:
var badValues = {
"a": 1, "b": 1, "c": 1, ...
};
do {
color = prompt("Write a word1 or word2 to get out of loop", "");
} while (!badValues[color]);
你可以翻转逻辑来处理“白名单”而不是“黑名单”。
编辑 - 一个富有洞察力的评论(现已删除)指出,||
比较始终为true
的声明仅在“a”与“a”真正不同时才有效“b”。
答案 1 :(得分:0)
您可以简单地使用数组并检查字符串是否在数组中。
var words = ["word1", "word2", "word3"];
do {
color = prompt("Write a " + words.join(' or ') + " to get out of loop", "");
} while (words.indexOf(color) === -1);
document.getElementById("show").innerHTML = color;