Javascript、Do While 循环多个选项

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

谢谢

最佳答案

检查某事物是否不是一件事,不是另一件事,总是正确的。我认为您想要 && 而不是 ||

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

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”与“b”确实不同。

关于Javascript、Do While 循环多个选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15101553/

相关文章:

javascript - 在 Firefox 中调用方法 Modal ContentWindow.postMessage 的权限被拒绝

JavaScript 函数显然没有被调用

javascript - ons-popover 不显示内容

javascript - 单击链接后的页面转换延迟(动画结束后)

javascript - 使 <img> 元素出现在悬停时并保持在与被点击按钮的相同 ID 相对应的点击上

javascript - 多次订阅 Observable 与订阅一次并共享结果

php - 使用ajax添加到数据库

javascript - 在当前模式上按下按钮时如何触发另一个模式?

javascript - 使用 $ ('#dividname' ).text 将换行符插入 div

javascript - NEDB 查询在数组上使用 $nin 返回误报