Javascript促销代码提示 - 无休止的while循环



我们使用促销代码来允许用户访问页面。它不一定是安全的 - 只是试图给客户一个代码提示,让他们感到特别。

所以我使用了这段代码...显然我做错了什么,因为浏览器即使在他们输入代码后也会继续检查代码(最终页面崩溃(。我尝试休息;最后,但随后提示没有发生。

我将不胜感激对此的任何帮助。

我想做的只是摆脱这里的无休止循环。

var secret;
while (secret !== "1")
  if (secret !== "2")
    if (secret !== "3")
      if (secret !== "4") {
        secret = prompt("What is the secret password?");
      };

问题是whileif混合使用不当。也许您应该考虑另一种方法:

var askSecret = function askSecret() {
    var secret = prompt("What is the secret password?");
    if(secret !== "theSecret") { askSecret(); }
};
    
askSecret();

编辑:多个密码/机密

在前面的示例中,唯一有效的密钥/密码是"theSecret"。如果需要拥有多个机密/密码,则必须使用 AND &&运算符扩展条件:

var askSecret = function askSecret() {
    var secret = prompt("What is the secret password?");
    if(
        secret !== "theSecret"
    &&  secret !== "TheOtherSecret"
    &&  secret !== "TheThirdValidSecret"
    )
    {
        askSecret();
    }
};
    
askSecret();

如果用户在

if (secret != XX)行中键入任何数字,则代码将进入无限循环。这是因为满足while条件,但if条件失败,因此它会跳过prompt()函数并重复while。由于这不会改变answer,它一遍又一遍地这样做。

如果要检查多个可能的答案,请在while语句中全部执行:

var secret;
while (secret != "1" && secret != "2" && secret != "3" && secret != "4") {
  secret = prompt("What is the secret password");
}

最新更新