Javascript,Do While循环多个选项

时间:2013-02-26 23:34:20

标签: javascript

请你解释一下并给出正确答案:

<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个选项,那就太棒了!

谢谢

2 个答案:

答案 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;