Javascript 为什么赢了';本地存储工作?
我正在尝试创建一个数组来存储用户名,然后将其打印到控制台。然而,当我刷新页面并点击submit时,上次的用户名就不存在了 这是我的密码:Javascript 为什么赢了';本地存储工作?,javascript,forms,web,azure-storage,Javascript,Forms,Web,Azure Storage,我正在尝试创建一个数组来存储用户名,然后将其打印到控制台。然而,当我刷新页面并点击submit时,上次的用户名就不存在了 这是我的密码: var users = []; function User(first_name, last_name, username, password, email, birthday_month, birthday, birthday_year){ this.first_name = first_name; this.last_
var users = [];
function User(first_name, last_name, username, password, email, birthday_month, birthday, birthday_year){
this.first_name = first_name;
this.last_name = last_name;
this.username = username;
this.password = password;
this.email = email;
this.birthday_month = birthday_month;
this.birhday = birthday;
this.birthday_year = birthday_year;
}
var Msg = document.getElementById("Msg");
function Submit(){
var a = document.forms["form"]["First_Name"].value;
var b = document.forms["form"]["Last_Name"].value;
var c = document.forms["form"]["Username"].value;
var d = document.forms["form"]["Password"].value;
var l = document.forms["form"]["Email"].value;
var month = document.forms["form"]["birthday_month"].value;
var day = document.forms["form"]["birthday"].value;
var year = document.forms["form"]["birthday_year"].value;
localStorage.setItem("fn", a);
var ln = localStorage.b;
var u = localStorage.c;
var p = localStorage.d;
var e = localStorage.l;
var m = localStorage.month;
var d = localStorage.day;
var y = localStorage.year;
if (ln == null || ln == "" || u == "" || u == null || p == "" || p == null || e == null || e == "" || m == "Month" || d == "Day" || y == "Year") {
Msg.textContent = "Please fill out all information correctly!";
return false;
} else {
var account = new User(ln, u, p, e, m, d, y);
var wha = localStorage.getItem("fn");
users.push(wha);
Msg.textContent = "Registration succesful!"
console.log(users);
}
}
我认为代码存在一些问题,第一个问题是变量名有意义。命名变量a、b、c、d是自找麻烦 在提交功能中
var ln = localStorage.b;
var u = localStorage.c;
var p = localStorage.d;
var e = localStorage.l;
var m = localStorage.month;
var d = localStorage.day;
var y = localStorage.year;
我不知道这里发生了什么;如果您认为这是保存到本地存储或从本地存储获取,那么您就错了
在if语句的条件中,我将使用“==”而不是“==”,以确保javascript在试图确定类型是否相等时不会转换类型,特别是在与null或“”进行比较时
当保存到localStorage时,请记住您只能在其中存储字符串,您可以使用setItem(名称、值);比如说
localStorage.setItem("firstName", "James");
您可以通过执行以下操作来检索该信息:
var fname = localStorage.getItem("firstName");
var storedUser = JSON.Parse(localStorage.getItem("firstUser"));
如果要存储对象,需要将其转换为字符串,这可以使用JSON.stringify()完成,因此假设您有以下用户:
var firstUser = new User("fname", "lname", "uname", "pass", "email", 12, 4, 2000);
您可以这样存储它:
localStorage.setItem("firstUser", JSON.stringify(firstUser));
然后,您可以按如下方式检索它:
var fname = localStorage.getItem("firstName");
var storedUser = JSON.Parse(localStorage.getItem("firstUser"));
希望有帮助 您的代码中似乎有几个错误。函数
submit()
的逻辑是,每次点击该函数时,都会从表单中获取一系列数据,并将localStorage的fn
项设置为document.forms[“form”][“First_Name”]的新值
因此,现在的工作流程是,当您刷新页面时,点击submit
功能,您将以表单
获取数据,并每次覆盖localStorage.fn
。您永远无法获取存储在localStorage
中的最后一个值
您可以尝试分离submit()
函数,将store username和get username的逻辑拆分为单独的功能。您可以发布HTML吗?创建一个代码片段,以便我们可以帮助诊断您的问题!你能不能给我看一些我应该使用的代码。我对jsI比较陌生,我不清楚你的要求,填写表格并刷新页面后你想要什么?