我需要将所有域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);
}
答案 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]);
}