如果没有其他代码,如何停止在此JavaScript中执行循环?

时间:2018-08-30 11:06:19

标签: javascript

我将此代码编写为Javascript的一种实践,其中将其用于网页,作为一种登录系统。很简单-输入用户名和密码,如果正确,则可以。但是,给我带来问题的是当信息错误时代码的一部分,它应该发送警报并允许用户重试,然后发送另一个警报。但是相反,发生的是,当用户输入错误的信息时,警报会不断重复,而不会让用户再次尝试,直到警报下降到0。

如何编辑代码,以便用户可以在每次循环(尝试-)后尝试再次输入信息?

var attempt = 3;
var objects = [
    {
        username: "Marko",
        password: "123"
    },
    {
        username: "Pera",
        password: "123"
    },
    {
        username: "Nikola",
        password: "123"
    }
]

function clearFields() {
    document.getElementById("username").value = "";
    document.getElementById("password").value = "";
}

function validate() {
    var username = document.getElementById("username").value;
    var password = document.getElementById("password").value;

    for(i = 0; i < objects.length; i++) {
        if(username == objects[i].username && password == objects[i].password) {
            alert("You are logged in successfully, " + username);
            window.location = "logovanje.html";
            return false;
        }
        else {
            attempt--;
            alert("Wrong information, you have " + attempt + " attempts left!");  
            {
            if (attempt == 0) {
                document.getElementById("username").disabled = true;
                document.getElementById("password").disabled = true;
                document.getElementById("submit").disabled = true;
            }
        }
    }
}
}     

2 个答案:

答案 0 :(得分:1)

您只需要将else语句移到for循环之外,因为到现在为止,您正在减少尝试次数并显示objects中每个名称的警报。

赞:

function validate() {
    var username = document.getElementById("username").value;
    var password = document.getElementById("password").value;

    for(i = 0; i < objects.length; i++) {
        if(username == objects[i].username && password == objects[i].password) {
            alert("You are logged in successfully, " + username);
            window.location = "logovanje.html";
            return false;
        }
    }
    attempt--;
    alert("Wrong information, you have " + attempt + " attempts left!"); 
    if (attempt == 0) {
        document.getElementById("username").disabled = true;
        document.getElementById("password").disabled = true;
        document.getElementById("submit").disabled = true;
    }
}

这样,如果输入正确,函数将返回并停止执行,否则将引发警报并减少尝试。

答案 1 :(得分:0)

使用return;break;停止执行循环;)