javascript,将用户名和密码与数组值匹配

时间 2019-02-22
阅读 57
点赞 0
收藏 0
连接tjw
var usernames = ["smith",  "tron",      "ace",      "ladyj",    "anon"];
var passwords = ["qwerty", "EndOfLine", "year1942", "ladyj123", "PASSWORD"];
var x = prompt("Please enter the username");
var y = prompt("Please enter the password");

function validate(usernames, passwords) {
    for (var i=0; i <usernames.length; i++) {
        if ((x == usernames[i]) && (y == passwords[i])) {
            valid = true;
            break;  
        }
    }
    if (valid) {
        alert("Valid Credentials");
    } else {
        alert("Invalid Credentials")
    }       
}

所以我试图创建一个循环来检查用户名并通过输入的提示,所以基本上,当提示输入用户名并且用户输入“smith”时,正确的密码应该是“qwerty”,或者如果用户输入“tron”时,正确的密码应该是“endofrine”,否则提示“无效凭证”应该是OP。

当我打开HTML文件时,我输入用户/密码,但在输入凭据后不发送任何类型的警报。

建议答案

除了将阵列移动到<script>标签和呼叫validate()在某些地方,最好让它返回结果,而不是直接设置变量。这里函数返回true如果循环中有匹配项,如果没有匹配项,则返回false最后:

var usernames = ["smith",  "tron",      "ace",      "ladyj",    "anon"];
var passwords = ["qwerty", "EndOfLine", "year1942", "ladyj123", "PASSWORD"];

function validate(username, password) {
    for (var i=0; i <usernames.length; i++) {
        if ((username === usernames[i]) && (password === passwords[i])) {
            return true; // match found
        }
    }
    return false; // match not found
}

var x = prompt("Please enter the username");
var y = prompt("Please enter the password");

var valid = validate(x, y);

if(valid) {
  alert("valid credentials");
}
else {
  alert("invalid credentials");
}
👍 0