我试图在localstorage中保存一些数据。我的脚本看起来像这样:
localStorage.clear(); //only for testing
if(typeof localStorage.akten == "undefined") {
localStorage.akten = new Array();
}
var nam = "alpha";
localStorage.akten[nam] = {
"beta": 12
};
localStorage["a_akte"] = nam;
但如果我console.log(localStorage);
或console.log(localStorage.akten);
akten
只是一个空字符串?为什么?使用普通对象而不是localStorage可以很好地工作。
答案 0 :(得分:4)
这是因为localStorage
不是对象;这是一个界面。您只能为其分配 String ,最好的方法是使用localStorage.setItem
。如果您想设置更复杂的数据,则需要先将其编码为JSON。
function localStore(key, obj) {
return window.localStorage.setItem(key, JSON.stringify(obj));
}
function localGet(key) {
return JSON.parse(window.localStorage.getItem(key));
}
localStore('foo', {bar: 'baz'});
localGet('foo'); // Object {bar: "baz"}
答案 1 :(得分:3)
令人惊讶的是魔鬼在细节中。 localStorage
仅存储字符串。使用例如JSON.stringify()
和JSON.parse()
将对象存放到那里之前,将对象编码为JSON。