我将此代码编写为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;
}
}
}
}
}
答案 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;
停止执行循环;)