我想循环本地存储空间以获取密码和用户名,以检查是否正确,如果不是,则提醒消息。
代码运行良好,但我不知道在哪里写"invalid username"
消息,因为循环遍历每条记录,因此每次记录检查都会弹出消息,直到找到它为止。
我想要的是在搜索完成后弹出消息。
这是我的代码:
$("#login").click(function(){
var username =$("#user").val();
var password =$("#pass").val();
var userCount = localStorage.getItem('userCount');
for (i=1;i<=userCount;i++) {
var user = JSON.parse(localStorage.getItem("user" + i));
if((user.username == username)||(user.password == password)){
alert("welcome "+username);
} else {
alert("Invalid Username");//this message keeps poping up on every record until username found
}
}
});
答案 0 :(得分:1)
将循环放在函数中。
如果循环内的任何内容匹配,则从该函数返回true(或用户对象)。
循环后返回false(只有在没有匹配时才会到达)。
根据调用它的返回值处理函数外的警报。
答案 1 :(得分:0)
找到匹配项时将布尔变量设置为true
,并使用break
停止循环。否则,如果循环完成后布尔值仍为false
,则未找到匹配项。
$("#login").click(function(){
var username =$("#user").val();
var password =$("#pass").val();
var userCount = localStorage.getItem('userCount');
var foundOne = false;
for (i=1;i<=userCount;i++) {
var user = JSON.parse(localStorage.getItem("user" + i));
if((user.username == username)&&(user.password == password)){
foundOne = true;
break;
}
}
if(foundOne) {
alert("welcome "+username);
// other "welcome" code
} else {
alert("Invalid Username");
}
});
注意,您可能希望在此处使用&&
运算符代替||
:
(user.username == username)&&(user.password == password)
否则您可能会获得一个与另一个密码相同的用户的匹配。