可以将 3 个对象添加到本地存储,而不仅仅是值和键?我尝试了一些代码但不起作用。
我想要:
- 3 个对象
- 3个输入文字
- 保存按钮,用于保存页面上的文本
最佳答案
不,你不能。 localStorage
(和sessionStorage
)只能存储键值对,其中值只能是字符串。
您能做的最好的事情就是使用某种序列化算法来存储普通对象。 JSON 是最常见的,因此您可以使用 JSON.stringify 将对象转换为字符串,使用 JSON.parse 将其转换回对象 - 这将<不是“相同”(即对相同数据的引用),而是等价的东西。
这意味着发生这种情况:
var a = {value: 5},
j = JSON.stringify(a);
var b = a,
c = JSON.parse(j);
a.value = 7;
b.value; // 7
c.value; // 5
但这无论如何都不适用于 DOM 元素。它们无法存储,期间。就像任何非 Object
类的任何其他对象一样,除非它们提供了 toJSON
方法来可靠地将它们转换为字符串,最终可以解析回来。
JSON.stringify 在内部使用 toJSON
方法将对象转换为字符串。
Date
对象提供 toJSON
方法。您可以使用 Date.parse
将字符串转换回来:
var d = new Date(),
j = d.toJSON(); // e.g. "2014-02-22T10:35:41.579Z"
var o = new Date(Date.parse(j));
o.getTime() === d.getTime(); // true
o === d; // false
(请记住,IE7 及更低版本本身不支持 JSON。)
但是,您不能对 DOM 元素执行相同的操作,因此 2 和 3 不可行。
关于javascript - 本地存储3个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21952942/