我已经从这个网站采取了一些要点,当涉及到传输数据到和从本地存储。然而,它似乎不能正常工作。简而言之,我试图以包含对象的数组的形式将数据加载到本地存储和从本地存储中加载。我知道它被保存为本地存储中的字符串,然后使用JSON格式来解决这个问题,我认为当对象中有对象时,也会出现问题。然而,在目前的状态下,它似乎不起作用。有什么想法吗?
var students = [{name: "Petrina", age: "20"}];
function saveList(){
localStorage.setItem('somekey', JSON.stringify(students));
console.log("Saved to Local");
}
function loadList(){
students = JSON.parse(localStorage.getItem('somekey'));
}
代码没有错误,我正在使用与加载窗口相关的函数。
window.onload = () => { loadList() }
发布于 2020-10-13 15:49:07
你补充说你是从onload
打来的,
在您的代码中,您将加载到students
中。
添加到代码的开头:
var students;
。
注意:有些对象需要特殊处理。
例如:Date
var date = new Date();
localStorage.date = JSON.stringify(date);
date = new Date(JSON.parse(localStorage.date));
在补充资料之前回答:
key
是localStorage
的一种方法。
别用它。
例如,可以使用students
。
(这是假设您调用了函数)
var students = [{name: "Petrina", age: "20"}];
function saveToLocalStorage(key, value){
localStorage.setItem(key, JSON.stringify(value));
console.log("Saved to LocalStorage");
}
function loadFromLocalStorage(key){
console.log("Loaded from LocalStorage");
return JSON.parse(localStorage.getItem(key));
}
console.log("students: "+students);
saveToLocalStorage("stu", students);
var st2=loadFromLocalStorage("stu");
console.log("st2: "+st2);
发布于 2020-10-13 16:50:13
它解决了!-我不知道是什么问题。在查看本地存储数据时,我清除了所有函数的调用,并一次调试了保存和加载函数1。首先要解决的问题是,它根本没有保存在运行时更新的数据,因此它只是继续加载始终相同的值。@iAmOren通过创建一个返回值的函数的想法可能已经做到了这一点,但是我不知道为什么。感谢您的回复和支持!
发布于 2020-10-13 16:34:00
您是否遗漏了对saveList函数的调用?
在调用saveList之前调用loadList会像您预期的那样工作。
请参阅:https://codesandbox.io/s/strange-brown-3mmeq?file=/index.html
https://stackoverflow.com/questions/64338502
复制相似问题