Javascript 为什么赢了';本地存储工作?

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_

我正在尝试创建一个数组来存储用户名,然后将其打印到控制台。然而,当我刷新页面并点击submit时,上次的用户名就不存在了

这是我的密码:

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比较陌生,我不清楚你的要求,填写表格并刷新页面后你想要什么?