首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >本地存储3个对象

本地存储3个对象
EN

Stack Overflow用户
提问于 2014-02-22 10:24:32
回答 2查看 444关注 0票数 0

可以将3对象添加到本地存储中,而不仅仅是值和密钥?我试过一些密码但没用。

我要:

  1. 3个物体
  2. 3输入文本
  3. 保存按钮,该按钮在页面上保存文本
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-22 10:38:33

localStorage (和sessionStorage)只能存储键值对,其中值只能是字符串.

最好的方法是使用一些序列化算法存储普通对象。JSON是最常见的,因此您可以使用JSON.stringify将对象转换为字符串,使用JSON.parse将其转换回对象--这将不是“相同的”(即对相同数据的引用),而是等价的东西。

这意味着会发生这样的事情:

代码语言:javascript
运行
复制
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方法来可靠地将它们转换为字符串,而字符串最终可以被解析回来。

toJSON方法由JSON.stringify内部使用,用于将对象转换为字符串。

例如,Date对象提供了一个toJSON方法。可以使用Date.parse将字符串转换回

代码语言:javascript
运行
复制
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是不可行的。

票数 3
EN

Stack Overflow用户

发布于 2014-02-22 10:27:25

很快就不会了。只能存储字符串.类型的键值。

但是,你得看看:Storing Objects in HTML5 localStorage

他们通过对物体进行串紧来解释解决办法。

引用CMS(接受答复):

代码语言:javascript
运行
复制
var testObject = { 'one': 1, 'two': 2, 'three': 3 };

// Put the object into storage
localStorage.setItem('testObject', JSON.stringify(testObject));

// Retrieve the object from storage
var retrievedObject = localStorage.getItem('testObject');

console.log('retrievedObject: ', JSON.parse(retrievedObject)); 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21952942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档