循环本地存储

时间:2014-07-02 08:19:00

标签: javascript local-storage

我想循环本地存储空间以获取密码和用户名,以检查是否正确,如果不是,则提醒消息。
代码运行良好,但我不知道在哪里写"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
        }
    }
});

2 个答案:

答案 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)

否则您可能会获得一个与另一个密码相同的用户的匹配。