2014-07-02 52 views
0

我想循环本地存储的密码和用户名,以检查是否正确,并提示消息是否存在。
代码运行良好,但我不知道在哪里编写"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

出于好奇:这是什么用途呢? –

回答

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"); 
    } 
}); 

NB,您可能需要使用的,而不是||这里&&操作:

(user.username == username)&&(user.password == password) 

否则,你可能会得到谁拥有相同的密码作为另一个用户的匹配。

+0

是的,谢谢你,我没有认识到:) – user3789242

1

把循环函数内部。

如果循环内的任何内容匹配,则从该函数返回true(或用户对象)。

在循环之后返回false(如果没有任何匹配,只能到达)。

根据调用它的返回值在函数外部处理警报。