2013-09-29 35 views
1

数据我知道我可以在JavaScript中创建删除HTML 5的localStorage从JavaScript

data = JSON.parse(localStorage.something); 
data[0] == "some data"; 

数据的JSON格式但当我尝试删除它不工作。

delete data[0]; 
+4

“不工作”是什么意思?你是否期待它能够奇迹般地更新你最初解析到你修改的对象中的字符串? – SLaks

+1

或者,您是否想删除数组的第一个元素,而不是删除它? 'data.shift();'。 – Ryan

+0

localStorage.something = JSON.stringify(data);现在localStorage.something也改变了。 – Tom

回答

3

delete data[0]只会从data阵列,这是不localStorage项目(因为,正如你已经知道,该项目是一个字符串)删除该项目。

您必须保存更改。此外,我建议使用data.shift()根据minitech的评论而不是delete - delete更适合对象属性,而不是数组索引。

data = JSON.parse(localStorage.something); 
data.shift(); // delete data[0] without breaking sequence 
localStorage.something = JSON.stringify(data); 
+0

在这种情况下使用'getItem()'和'setItem()'有什么好处吗? – Pavlo

+0

不是,不。 –

2

之后你做的:

data = JSON.parse(localStorage.something); 

然后data变量保存着从现在开始完全从localStorage的分离的idependent对象(存储只需要进行反正解析字符串,而不是一个'真正的“对象)。

如果你改变它,你需要手动更新本地存储那样:

localStorage.setItem("something", JSON.stringify(data)); 

作为一个方面说明:如果你的目标是在旧的浏览器,然后确保你包括像json2.js使JSON对象无处不在。

+1

就桌面浏览器而言,如果它支持localStorage,那么它也支持JSON。 –

+0

是的,你可能是对的。我感到工作这么久,网站呈现怪癖模式,其中IE浏览器与localStorage没有问题,但无法识别JSON ... – siledh