【问题标题】:localStorage only saves first member of arraylocalStorage 只保存数组的第一个成员
【发布时间】:2017-12-04 17:21:08
【问题描述】:

每次我想从localStorage 获取数组时,它只会给我最后一个值。我认为它将数组作为对象处理。我该如何解决这个问题?

function saveData() {


    if ($("#forma").valid() == true) {

        var Name = document.getElementById("username").value;
        var Year = document.getElementById("godinaupisa").value;
        var Index1 = document.getElementById("brindeksa").value;
        console.log(Name);
        var EMial = document.getElementById("email").value;
        var OBJ = { NAME: "JOHN DOE", YEAR: "18", INDEX1: "1", EMAIL: "@" };


        OBJ.NAME = Ime1;
        OBJ.YEAR = Year;
        OBJ.INDEX1 = Index1;
        OBJ.EMAIL = EMial;

        var arrayOBJ = [];
        arrayOBJ.push(OBJ);

        localStorage.setItem("ARRAY", JSON.stringify(arrayOBJ));
        alert("saved");

        $("#forma").resetForm;

    };
}

【问题讨论】:

  • 缺少结尾括号。

标签: javascript jquery arrays local-storage


【解决方案1】:

因为您每次尝试保存时都会创建 arrayOBJ 数组,所以您只会在其中包含一项。当你将它保存到本地存储时,你只是在写已经存在的任何东西。而是尝试在保存函数之外将 arrayOBJ 定义为全局变量。 或者,您可以使用 localStorage.getItemJSON.parse 来获取 localStorage 中的当前数组,然后再推送到它。

【讨论】:

    【解决方案2】:

    所以,您正在调用 setItem,它只会将其设置为您传递的任何内容。我认为您要做的是读取当前值,附加到该值并将新值设置为该值。

    var data = localStorage.getItem("ARRAY");
    data = JSON.parse(data);
    data.push(OBJ);
    localStorage.setItem("ARRAY", data);
    

    【讨论】:

    • 我按照你说的做了,但是每次我把它调用回一个新的数组 var 并尝试访问任何东西,但第一个点 t 给我一个错误
    • @King23 将您的代码放入 (codepen)[www.codepen.io] 以便我可以看到您在做什么。只是告诉我你遇到了一个错误并不能真正让我继续下去。
    • 我可以,但遗憾的是大部分不是英文的,我怀疑你能理解。我只想将多个对象存储为一个数组,以后可以根据需要添加对象,当我从本地调用它时,我会得到整个数组
    • 我不知道让您将代码放入 codepen 与您的英语技能有什么关系哈哈 代码就是代码,不管它是什么语言。
    • 我指的是变量和接口的 html 和 JavaScript 名称,但如你所愿(你会后悔问)[codepen.io/anon/pen/OgQeqL]
    猜你喜欢
    • 2015-04-18
    • 2014-05-24
    • 2014-02-04
    • 1970-01-01
    • 2019-05-29
    • 1970-01-01
    • 2023-03-07
    • 2021-12-19
    • 1970-01-01
    相关资源
    最近更新 更多