1

您能否解释并显示正确答案:

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

谢谢

4

2 回答 2

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]);

您可以翻转逻辑来处理“白名单”而不是“黑名单”。

编辑——一个有见地的评论(现已删除)指出,我的说法是,只有当“a”与“b”真正不同时,||比较才会始终有效。true

于 2013-02-26T23:35:25.640 回答
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;
于 2013-02-26T23:45:11.653 回答