我无法在简单的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";
}
答案 0 :(得分:3)
找到它时使用break
。否则,下一个循环将成功设置为false。
for (var i = 0; i < userLogins.length; i++)
{
if(pass == userLogins[i].password && user == userLogins[i].user )
{
success = true;
break;
}
else
{
success = false;
}
}
secret(success);
答案 1 :(得分:3)
for (i = 0; i < userLogins.length; i++)
{
if(pass == userLogins[i].password && user == userLogins[i].user )
{
success = true;
}
else
{
success = false;
}
}
您需要break
,否则true
的{{1}}值会在下一次迭代时被success
覆盖。 。最后可能的凭证除外,没有“下一次”迭代。
完成后,您根本不需要false
分支:
else