Pokúšam sa uložiť nejaké údaje do lokálneho úložiska. Môj skript vyzerá takto:
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;
Ale ak áno console.log(localStorage);
alebo console.log(localStorage.akten);
akten
je iba prázdny reťazec? Prečo? S normálnym objektom namiesto localStorage funguje dobre.
odpovede:
4 pre odpoveď č. 1To je preto, že localStorage
nie je objekt; je to rozhranie. Môžete priradiť iba povrázok a najlepší spôsob, ako to dosiahnuť, je localStorage.setItem
, Ak chcete nastaviť zložitejšie údaje, musíte ich zakódovať ako JSON najprv.
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"}
3 pre odpoveď č. 2
Je prekvapujúce, že diabol je v detailoch. localStorage
ukladá iba reťazce. Pred uložením ich do objektu JSON kódujte napríklad pomocou JSON.stringify()
a JSON.parse()
.