将所有localstorage存储并设置为变量

时间:2014-11-28 19:15:58

标签: javascript html5 local-storage

我需要将所有域localStorage保存在变量中,然后再从变量中再次设置它。

我尝试使用以下代码保存localstorage:

for (var i = 0, len = localStorage.length; i < len; ++i) {
 objects = JSON.stringify(localStorage.getItem(localStorage.key(i)));
}
console.log(objects);

但它给了我一个错误。我怎样才能从变量中设置所有localstorage?像这样的东西?

for (var i = 0, len = objects.length; i < len; i++) {
      localStorage.setItem(len, objects(i);
}

1 个答案:

答案 0 :(得分:1)

您可以执行以下操作来设置项目:

function setItem(key, value){
    if (typeof value === 'object') {
        value = JSON.stringify(value);
    }
    localStorage.setItem(key, value);
}

和类似的东西来检索它:

function getItem(key){
    if (key){
        try{
            return JSON.parse(localStorage.getItem(key));
        }
        catch(e){
            return localStorage.getItem(key);
        }
    }
}

localStorage只保存字符串,数字或布尔值,所以如果你的值是一个对象,你需要在保存它之前 stringify ,然后当你检索它时你需要解析它再次成为一个对象。

现在使用这两个函数并像包装一样使用它们来访问循环中的localStorage值。

[更新 - 修复循环]

获取数据

var objects = {};
for (var i = 0, len = localStorage.length; i < len; i++) {
  objects[localStorage.key(i)] = getItem(localStorage.key(i));
}
console.log(objects);

设置数据

for (var o in objects) {
   setItem(o, objects[o]);
}