localStorage只保存数组的第一个成员

时间:2017-06-30 17:06:22

标签: javascript jquery arrays local-storage

每次我想从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;

    };
}

2 个答案:

答案 0 :(得分:2)

所以,你正在调用setItem,它只会将它设置为你传递的任何内容。我想你想要的是读取当前值,追加到那个并将新值设置为。

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

答案 1 :(得分:1)

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