【发布时间】:2015-11-26 16:33:34
【问题描述】:
所以我正在做一个小小的个人项目,但遇到了一个问题。
我需要每天的对象来保存各种 dom 元素对象。这些对象实例存储在一个数组中,然后该数组需要存储到 localStorage 以便稍后加载。
问题是当我执行 JSON.stringify 和 JSON.parse 时,它会将 HTML 节点转换为对象。所以当我尝试追加元素时,它告诉我第一个参数不是节点。
function save() {
localStorage.days = JSON.stringify(global.days);
localStorage.numberOfDays = global.numberOfDays;
localStorage.totalCount = global.totalCount;
}
function load() {
var parsedDays = JSON.parse(localStorage.days);
parsedDays.forEach(function(day){
document.getElementById("mainPage").appendChild(day.textObject);
});
任何人都知道如何将包含元素的对象数组放入 localStorage 中,同时保持它们的节点类型????
【问题讨论】:
-
无法完成。您必须从存储在 JSON 中的数据重新创建节点。没那么难,你只需要存储相关信息
-
不能直接序列化dom元素,看这里:stackoverflow.com/questions/2303713/…
-
您不应该序列化 DOM 元素并保存到 localStorage。相反,您可以将真实数据 json 保存到 localStorage 中,并在需要时转换为 HTML。
标签: javascript html json dom stringify