为什么我的javascript函数的一部分不会运行,即使它在语法上是正确的?

Mic*_*der 0 javascript if-statement

我是一个编程新手试图创建一个要求输入密码的函数,但如果密码尝试错误超过五次,将显示错误消息.我试过用这些代码摆弄各种​​不同的方法,但它不会起作用.我有一个名为count的变量,从0开始,每次输入错误的密码时,1应该被添加到count中,一旦count大于5,就会显示错误消息.

document.getElementById("word-checker").onclick = function () {
    var count = 0;
    var inputValue = document.getElementById("text-input").value;
    var secretWord = "password123";

    if (count > 5) {
        alert("You have had 5 unsuccessful login attempts. You account has been temporarily locked.");
    } else if (inputValue == secretWord) {
        alert("Your answer is correct!");
        document.getElementById("text-input").value = "";
    } else if (inputValue!==secretWord) {
        count++;
        alert("Your answer is incorrect. Please try again.");
        document.getElementById("text-input").value = "";
    }
}
Run Code Online (Sandbox Code Playgroud)

这让我疯了.我确定这是一个简单的初学者的错误.任何有助于我理解为什么这不起作用的输入都会得到很多的感激.

tra*_*r0x 6

每次触发click事件时,您都将重置count0:

document.getElementById("word-checker").onclick = function () {
    var count = 0; // <-- button clicked, set the value to zero.
    // ...
}
Run Code Online (Sandbox Code Playgroud)

这意味着count永远不会达到5(事实上​​,它永远不会成为> 1,因为当count++值增加时1,它会0在下次单击时重新设置).因此,if (count > 5)永远不会触发if语句的一部分.

您需要在click事件count 之外声明:

var count = 0;
document.getElementById("word-checker").onclick = function () {
    // use count here
    // ...
}
Run Code Online (Sandbox Code Playgroud)