我在 localstorage 中找到了存储username
和password
的注册表单,但正如您所见,它可以假设只存储一个帐户因此,当您登录时,您只能使用已注册的最新数据。我的目的是在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>
答案 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。