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

何かが 1 つのものではないか、別のものではないかを確認することは、常に true になります。私はあなたが欲しい&&とは思わない||

より一般的には、多くのオプションがある場合、値が文字列 (または簡単に文字列化されたもの) である場合、適切なパターンは次のとおりです。

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 に答える