Javascript I';我正试图制作一个程序来锁定一个网站,但我可以';我不能让它工作

Javascript I';我正试图制作一个程序来锁定一个网站,但我可以';我不能让它工作,javascript,google-chrome-devtools,Javascript,Google Chrome Devtools,我正在尝试用javascript制作一个程序来锁定一个站点。你所要做的就是在ChromeDevTools的控制台中键入密码,然后会弹出一个提示,询问密码。如果密码正确,它将消除警报。如果密码不正确,警报将再次弹出。警报弹出部分工作正常,但即使密码正确,警报也会再次弹出 function firstFunction() { var psswrd = prompt("What is the password?") } function mainFunction() { var

我正在尝试用javascript制作一个程序来锁定一个站点。你所要做的就是在ChromeDevTools的控制台中键入密码,然后会弹出一个提示,询问密码。如果密码正确,它将消除警报。如果密码不正确,警报将再次弹出。警报弹出部分工作正常,但即使密码正确,警报也会再次弹出

function firstFunction() {
var psswrd = prompt("What is the password?")
}
function mainFunction() {
  var done = "two"
  var psswrd = "johndoe"
  while ("two"==done) {
    firstFunction()
    if (psswrd == "password") {
      var done = "one"
    }
  }
}
mainFunction()
试试这个:

function mainFunction() {
  const correctPass = "correct";

  let promptValue = null;

  while (promptValue !== correctPass) {
      promptValue = prompt("What is the password?")
  }
}

mainFunction()
解释:

  • 首先,我设置了正确的值
  • 我将promtValue设置为null,因为在begging中,它必须为null才能运行
    的第一行,而
  • 然后我将其更改为提示中的答案,当用户键入正确的密码时,它将不会通过
    ,而(promptValue!==correctPass)
试试这个

function mainFunction() {
  var done = "two"
  
  while ("two"==done) {
    var psswrd = prompt("Whats the word")
    if (psswrd == "password") {
      var done = "one"
    }
  }
}
mainFunction()

嗨,艾丹,请阅读变量范围-这可能是您的problem@AIDAN绿色签出我的答案,也许它会帮助你:)诊断像这样的问题,调试并检查变量值是否符合你的期望,或者,您可以调试旧式,在检查psswrd的当前值是否符合“密码”之前,抛出一个警报,看看它是否符合您的预期。从长远来看,准确理解建议的解决方案工作的原因将更有帮助。我相信你不会只是复制它们,而不去思考你最初的方法有什么不同:-)@Chris我发现建议的解决方案唯一不同的地方是它们不在函数中使用函数,并且(在Sowam的awnser中)它们分配变量psswrd(或prmptValue)在提示之前给定了null值。但是,我看不出null的赋值与john doe的赋值有什么不同,因为两者都不是正确的密码。这似乎是可行的,但没有解释它是如何工作的。这仅仅是因为它不再使用函数中的函数吗?它必须使用变量范围。代码main函数中的局部变量psswrd永远不会更新。调用firstFunction确实会更新psswrd,它只是声明一个同名的新局部变量,将提示数据写入其中,然后丢弃它。要按照您的方式执行,您必须将psswrd声明为全局变量,或者将main函数中声明的变量传递给firstFunction,然后让firstFunction返回它。希望这是有道理的