Javascript,边循环边执行多个选项

Javascript,边循环边执行多个选项,javascript,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=

你能解释一下并给出正确答案吗

<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>

var a=“word1”; var b=“word2”; 做{ color=prompt(“写一个单词1或单词2以跳出循环”,”; }而(颜色!=a | |颜色!=b); document.getElementById(“show”).innerHTML=color;
当我删除“b”选项并只保留“a”选项时,它会起作用。那么,我如何将其用于多个选项呢?另外,如果你有一个简单的解决方案,比如我有15个选项,那就太棒了


感谢您检查某件事是否不是一件事,不是另一件事,这将始终是正确的。我想你想要的是
&&
,而不是
|

更一般地说,如果有很多选项,那么如果值是字符串(或容易字符串化的东西),那么好的模式是:

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”确实不同的情况下才有效。

检查某件事是否不是一件事,不是另一件事,将始终是正确的。我想你想要的是
&&
,而不是
|

更一般地说,如果有很多选项,那么如果值是字符串(或容易字符串化的东西),那么好的模式是:

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”确实不同时才起作用。

您可以简单地使用数组并检查字符串是否在数组中

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;

您可以简单地使用数组并检查字符串是否在数组中

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;

@是的,但这就是我所说的“另一件事”:-@是的,但这就是我所说的“另一件事”:-)还有
String.prototype.indexOf
,它的工作原理稍有不同,但可能更可取,当然这取决于OPs的要求。好的方面是它在ECMAScript ed 3中得到了支持(因此几乎每个浏览器都可能在使用中),而且字符串的速度非常快
Array.prototype.indexOf
是ES5,因此应该与垫片一起使用,速度可能较慢(虽然可能是不明显的)。它在IE9+和所有其他浏览器中都得到了支持。而在这里,我所处的公司环境中,SOE是IE8,并且知道仍在使用IE6.True的地方。请知道我对此感到抱歉:这里还有
String.prototype.indexOf
,它的工作原理稍有不同,但可能更可取,当然这取决于OPs的要求。好的方面是它在ECMAScript ed 3中得到了支持(因此几乎每个浏览器都可能在使用中),而且字符串的速度非常快
Array.prototype.indexOf
是ES5,因此应该与垫片一起使用,速度可能较慢(虽然可能是不明显的)。它在IE9+和所有其他浏览器中都得到了支持。而在这里,我所处的公司环境中,SOE是IE8,并且知道仍在使用IE6.True的地方。我知道我为此感到抱歉:P