每次我想从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;
};
}
答案 0 :(得分:2)
所以,你正在调用setItem
,它只会将它设置为你传递的任何内容。我想你想要的是读取当前值,追加到那个并将新值设置为。
var data = localStorage.getItem("ARRAY");
data = JSON.parse(data);
data.push(OBJ);
localStorage.setItem("ARRAY", data);
答案 1 :(得分:1)
因为每次尝试保存时都会创建arrayOBJ数组,所以您只需要在其中包含一个项目。当你把它保存到本地存储时,你只是在写任何已经存在的东西。而是尝试在保存函数之外定义arrayOBJ作为全局变量。
或者,您可以使用localStorage.getItem
和JSON.parse
来获取localStorage中的当前数组,然后再推送它。