我无法让循环在我的简单 js 登录脚本中工作。当我尝试使用数组中最后一个登录名(user3 和 pass3)以外的任何登录名登录时,它返回 false。
我做错了什么?
==
和 ===
我都试过了。
var userLogins = [{user:"user1", password:"pass1"},{user:"user2", password:"pass2"},{user:"user3", password:"pass3"}]
var success = null;
function logon(user, pass) {
userok = false;
for (i = 0; i < userLogins.length; i++)
{
if(pass == userLogins[i].password && user == userLogins[i].user )
{
success = true;
}
else
{
success = false;
}
}
secret(success);
}
function getData() {
var user = document.getElementById("userid").value;
var password = document.getElementById("password").value;
logon(user, password);
}
function secret(auth){
if(auth)
{
show('success');
hide('login');
}
else
{
show('error');
hide('login');
}
}
function show(show) {
document.getElementById(show).className = "show";
}
function hide(hide) {
document.getElementById(hide).className = "hide";
}
最佳答案
for (i = 0; i < userLogins.length; i++)
{
if(pass == userLogins[i].password && user == userLogins[i].user )
{
success = true;
}
else
{
success = false;
}
}
你需要一个 break
,否则 success
的 true
值会被 覆盖>false
在下一次迭代中...除了最后可能的凭据,没有“下一次”迭代。
完成后,您实际上根本不需要 else
分支:
var success = false;
for (i = 0; i < userLogins.length; i++) {
if (pass == userLogins[i].password && user == userLogins[i].user) {
success = true;
break;
}
}
关于javascript - JS循环仅在匹配到数组中的最后一个元素时有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14617665/