关于此问题,我有两个问题:
1-我执行if (nickname in localStorage)
时有效吗?因为每次我运行代码都行不通。
2-我试图在多个页面中验证表单,但是每次我想保存一个昵称或其他昵称时,它都会保存另一个昵称。我尝试添加一个可计数的变量,但仍然无法正常工作。最好的方法是什么?
这是我三种形式中的两种形式的代码:
var k = 0;
function main() {
var buttonregister = document.getElementById("next");
var buttonlogin = document.getElementById("nextlogin");
var buttonsignin = document.getElementById("nextsignin");
if(buttonregister != null) {
buttonregister.addEventListener("click", createaccount);
} else if (buttonlogin != null) {
buttonlogin.addEventListener("click", submit);
}
}
function submit() {
var login = document.login;
var nickname = login.nickname.value;
if (nickname in localStorage) {
alert('The nickname ' + nickname + ' is already in use.');
} else {
localStorage.setItem("username"+k, nickname);
localStorage.setItem("password"+k, "");
localStorage.setItem("email"+k, "");
k++;
}
login.reset();
}
function createaccount() {
var register = document.register;
var nickname = register.nickname.value;
var password = register.password.value;
var email = register.email.value;
if (nickname in localStorage) {
alert('The nickname ' + nickname + ' is already in use.')
} else {
localStorage.setItem("username"+k, nickname);
localStorage.setItem("password"+k, password);
localStorage.setItem("email"+k, email);
k++;
}
register.reset();
}
document.addEventListener("DOMContentLoaded", function(event) {main()});
最佳答案
in
运算符返回键,而不是值。因此,您要问localStorage是否包含等于nickname
中存储的值的键。我认为这不是基于以下alert()
的意图。
此外,您永远不会设置nickname
localStorage属性,因此无论如何该测试都没有意义。
在这里,基于计数器的索引不一定是一种好的做法,因为不能保证顺序。有很多方法可以解决此问题。一种简单的方法是使用前缀,例如页面标题,表单名称或类似名称。
关于javascript - 在多个页面上具有localStorage的JavaScript表单,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50308324/