请问一个关于localStorage存储的问题?
我的代码时这样的:
var storage = window.localStorage;
storage[showPeople] = xml_text;
存储的格式是这样:
我现在想只留一条数据,将其他数据存在Value里,以JSON方式存储。
类似这样:
aaa: {"aaa":"","bbb":"","CCC":""}
我自己写了下,但是有问题,我还会动态添加一些数据,当页面刷新时,再添加数据时,会将之前的数据清空。
var storage = window.localStorage;
var obj = {};
obj[showPeople] = xml_text
storage.oXML = JSON.stringify(obj);
插入的时候用+=不知道为什么value前面多了个undefined
storage.oXML += JSON.stringify(obj);
第三次修改:
还是有问题
目前代码是这样
var obj = {};
oAbc.onclick = function(){
obj[showPeople] = xml_text;
if(!!!storage.oXML){
storage.oXML = "";
}
storage.oXML += JSON.stringify(obj); //保存xml
};
但是连续添加数据时,数据成了这样:
{"loooo":"<xml xmlns=\"http://www.w3.org/1999/xhtml\">\n <block type=\"variables_get\" id=\"7f.)[wz-vPpFPFoo?JBS\" x=\"151\" y=\"59\">\n <field name=\"VAR\">loooo</field>\n </block>\n</xml>"}{"qqqq":"<xml xmlns=\"http://www.w3.org/1999/xhtml\">\n <block type=\"variables_get\" id=\"Hr;dw7?yjKcwvXgEw456\" x=\"218\" y=\"59\">\n <field name=\"VAR\">qqqq</field>\n </block>\n</xml>"}
两条数据分别用大括号包裹起来了,我需要的是一个大括号包裹住所有的数据。
然后我将代码改成这样的:
var obj = {};
oAbc.onclick = function(){
if(storage.oXML) {
storage.oXML = '';
}
if (!!!obj[showPeople]){
obj[showPeople] = '';
};
obj[showPeople] += xml_text;
if(!!!storage.oXML){
storage.oXML = "";
}
storage.oXML += JSON.stringify(obj); //保存xml
};
但是不刷的时候是正常的,当页面刷新后,再次添加的时候,会将以前的数据给清空掉。
请问还有更好的办法吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
补充:
截图2:(点击保存的时候)
v2:
var storage = window.localStorage;
var obj = JSON.parse(storage.getItem(oXML)); //先获取已有的
obj[showPeople] = xml_text
storage.oXML = JSON.stringify(obj);
你可以一个object拼好了,转成json字符串存进去
storage可以这么用的么?
我平时都是用
setItem
跟getItem
你的意思是要汇总所有的key跟value吧?
API参考:https://developer.mozilla.org...
JSON.parse转json字符串为json对象
JSON.stringify转json对象为json字符串