在localstorage中存储寄存器表单数组

时间:2018-02-02 16:32:37

标签: javascript html arrays local-storage forms-authentication

我在 localstorage 中找到了存储usernamepassword注册表单,但正如您所见,它可以假设只存储一个帐户因此,当您登录时,您只能使用已注册的最新数据。我的目的是在localstorage中存储大量的用户名和密码,我认为使用数组,但我不确定如何做,然后还要如何检查这个假设数组中与登录表单数据的匹配。 我试着写下明显错误的代码。

这是注册表单的html和javascript。

<html>
    <form id="register-form"> 
        <input id="nome" type="text" placeholder="Name" value=""/>
        <input id="pw" type="password" placeholder="Password" value=""/>
        <input id="rgstr_btn" type="submit" value="get Account" onClick="store()"/> 
    </form>
</html>

<script>

    // Name and Password from the register-form
    var nome = [];
    var pw = [];
    var i=0;
    nome[i] = document.getElementById('nome');
    pw[i] = document.getElementById('pw');

    // storing input from register-form
    function store() {
        localStorage.setItem('nome', JSON.stringify(nome));
        localStorage.setItem('pw', JSON.stringify(pw));
        i++;
    }
</script>

这是登录表单的html和javascript。

<html>
    <form id="login-form"> 
        <input id="userName" type="text" placeholder="Enter Username" value=""/>
        <input id="userPw" type="password" placeholder="Enter Password" value=""/>
        <input id="login_btn" type="submit" value="Login" onClick="check()"/> 
    </form>
</html>

<script>
    // entered data from the login-form
    var userName = document.getElementById('userName');
    var userPw = document.getElementById('userPw');

    // check if stored data from register-form is equal to data from login form
    // stored data from the register-form
    for(i=0;i<nome.length;i++){
        var storedName = [];
        var storedPw = [];
        storedName[i]=localStorage.getItem('nome[i]');
        storedPw[i]=localStorage.getItem('pw[i]');
        if(userName.value == storedName[i] && userPw.value == storedPw[i]) {
            alert('You are loged in.');
        }else {
            alert('ERROR.');
        }
    }   
</script>

1 个答案:

答案 0 :(得分:0)

我无法想到这种情况的实际用途,但您可以修改store()函数以允许使用&#39; name&#39;添加多个值。作为关键和&#39; pw&#39;作为价值:

function store() {
  localStorage.setItem(name, pw);
}

然后检索

var user = localStorage.getItem(userName);
if (user === userPw) {
      alert('You are logged in.');
}else {
    alert('ERROR.');
}

您的替代方法是将数组插入localStorage,然后向其添加值的唯一方法是检索数组,将新值推送到该数组,然后将数组重新添加到localStorage。