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

时间:2018-04-13 23:56:51

标签: 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 = "";
    }
}

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

2 个答案:

答案 0 :(得分:6)

每次触发点击事件时,您都会将count重置为0

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

这意味着count永远不会到达5(事实上,它永远不会成为> 1,因为当count++将值增加到{{1}时},在下次点击时将其设置回1。因此,永远不会触发if语句的0部分。

您需要在点击事件的之外声明if (count > 5)

count

答案 1 :(得分:1)

您每次点击活动时都会将计数重新定义为0。您需要将count定义为函数外部的全局,然后在每个错误上定义++。 此外,尝试纠正您的缩进,因为它有助于阅读。