【发布时间】:2019-05-01 05:19:00
【问题描述】:
问题: 它使用 HTML 注册一个新的用户表单。 我应该在一个 JSON 键(“用户”键)中存储多个数组(包含“用户名:用户名,密码:密码,topScore:0”)它现在所做的只是它只存储一个数组,如果我输入另一个它只是覆盖当前。
// In HTML the function is called:
//<form name = "signup" onsubmit="registerNewUser()>
var user = [];
function registerNewUser() {
/** Get the value of username, password and repeat password **/
var username = document.getElementById("username").value;
var password = document.getElementById("password").value;
var passwordRepeat = document.getElementById("passwordRepeat").value;
/** boolean variable to check if the username already exits **/
var usernameExists = false;
/** if statement to check if password and passwordRepeat match **/
if (password == passwordRepeat) {
/** For loop to scan through registered users to check if username is already in use **/
for(let i = 0; i < user.length; i++) {
if(user[i].name == username) {
usernameExists = true;
}
}
if (usernameExists) {
alert("This user name already exists.");
}
else {
/** Put array into users in JSON storage with username,password and score values **/
user.push( {name: username, password: password, topScore: 0} );
localStorage.setItem("user", JSON.stringify(user));
alert("New account successfully created!");
/** Set variable usernameExists to its original value **/
usernameExists = false;
}
}
else {
alert("Passwords do not match. Please try again.");
}
}
【问题讨论】:
-
附注:您应该不将密码存储在 localStorage 中。不管它是否加密,你都不应该这样做。
-
您可以更简单地检查用户是否存在:
usernameExists=user.some(user=>user.name===username)和您设置user的代码(但不应该是users吗?)在您的问题中丢失。确保将其设置为来自 localStoragevar users = localStorage.getItem('users') || []; -
我发现的一个问题是您将整个用户数组存储在本地存储中,而不是登录的特定用户。
标签: javascript html arrays json object