请问一个关于localStorage存储的问题?

发布于 2022-09-04 10:13:14 字数 1947 浏览 16 评论 0

我的代码时这样的:

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

讽刺将军 2022-09-11 10:13:14
var storage = window.localStorage;
var aaa = JSON.stringify(storage);//转换为字符串
window.localStorage.clear();//清空localStorage
window.localStorage.setItem("aaa", aaa);

//使用时
JSON.Parse(window.localStorage.getItem("aaa"));

补充:

clipboard.png

截图2:(点击保存的时候)

clipboard.png

牵你的手,一向走下去 2022-09-11 10:13:14
for (var i = 0; i < 3; i++) {
  var storage = window.localStorage;
  storage[i] = 123;
}

clipboard.png

var obj = {}
var storage = window.localStorage;
for (var i = 0; i < 3; i++) {
  obj[i] = 123;
}
storage['obj'] = JSON.stringify(obj);

clipboard.png

v2:
var storage = window.localStorage;
var obj = JSON.parse(storage.getItem(oXML)); //先获取已有的
obj[showPeople] = xml_text
storage.oXML = JSON.stringify(obj);

假扮的天使 2022-09-11 10:13:14

你可以一个object拼好了,转成json字符串存进去

吻安 2022-09-11 10:13:14
storage[showPeople] = xml_text;

storage可以这么用的么?
我平时都是用setItemgetItem

你的意思是要汇总所有的key跟value吧?

var res = {},key;
var storage = window.localStorage;
//遍历所有storage的key
for(var i =0; i < storage.length; i++){
     key = storage.key(i);
     //每个key value都放到res去
     res[key] = storage.getItem(key);
}
//最后把res转成字符串存起来
storage.setItem('all', JSON.stringify(res));

API参考:https://developer.mozilla.org...

我最亲爱的 2022-09-11 10:13:14
// 保存
    window.localStorage.setItem("aaa", JSON.stringify({
        a: '',
        b: '',
    }))

    //读取
    var aaa = JSON.parse(window.localStorage.getItem("aaa"))
请别遗忘我 2022-09-11 10:13:14

JSON.parse转json字符串为json对象
JSON.stringify转json对象为json字符串

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文