2016-12-09 3 views
0

Ich versuche, Daten in localStorage mit jQuery zu speichern. Die Daten, die ich speichern möchte, werden jedes Mal zurückgesetzt, wenn ich meinen Chrome-Browser aktualisiere. Zuerst lese ich die Daten aus einem Wörterbuch durch getItem, dann setze ich es unter Verwendung setItem. Klingt ziemlich einfach, aber ich kann es nicht retten. Jede Hilfe wird geschätzt. DanklocalStorage wird in Chrome nach getItem zurückgesetzt, setItem

Hier ist mein js:

moneylove = {"snacks":{"c":1,"m":1,"e":2},"food":{"c":2,"m":0,"e":1},"soap":{"c":2,"m":0,"e":0},"toys":{"c":2,"m":1,"e":2}} //dog state 
for (state in moneylove["snacks"]){ 
    stateadd = JSON.parse(localStorage.getItem(state)) 
    stateadd += moneylove["snacks"][state] 
    localStorage.setItem(state,JSON.stringify(stateadd)) 
} 
console.log(localStorage) 
+1

Setzen Sie 'localStorage' vor 'javascript' bei Frage? – guest271314

+0

Zeigt das Browser-Entwicklungstool die lokalen Speicherdaten nach setItem an? – rogeriolino

Antwort

1

Sie ersetzen die key s, weil die jedes Unterobjekt gleichen Eigenschaften hat, so dass es sowieso ersetzt. Ändern Sie, um so zu sein.

var moneylove = {"snacks":{"c":1,"m":1,"e":2},"food":{"c":2,"m":0,"e":1},"soap":{"c":2,"m":0,"e":0},"toys":{"c":2,"m":1,"e":2}} //dog state 
for (state in moneylove["snacks"]){ 
    stateadd = JSON.parse(localStorage.getItem(state)) 
    stateadd += moneylove["snacks"][state] 
    localStorage.setItem("snacks" + state,JSON.stringify(stateadd)) // Make key be unique. 
} 
console.log(localStorage) 

EDIT

Der komplette Berechnung und Speicherverfahren, wie beispielsweise folgende. Dies kann die Zustände in jedem Objekt in moneylove berechnen.

var moneylove = {"snacks":{"c":1,"m":1,"e":2},"food":{"c":2,"m":0,"e":1},"soap":{"c":2,"m":0,"e":0},"toys":{"c":2,"m":1,"e":2}} //dog state 

for(var itemKey in moneylove) { 
    var item = moneylove[itemKey]; 
    for (var stateKey in item){ 
    var storageKey = itemKey + "-" + stateKey; 
    var stateadd = JSON.parse(localStorage.getItem(storageKey) || '0') 
    stateadd += item[stateKey]; 
    localStorage.setItem(storageKey, JSON.stringify(stateadd)) // Make key be unique. 
    } 
} 
console.log(localStorage) 
1

Versuchen Sie dies!

var DB = function(){ 
    this.Read = function(index){ 
     return JSON.parse(localStorage[index]).data; 
    }; 

    this.Write = function(index, data){ 
     localStorage[index] = JSON.stringify({data : data}); 
    }; 

    this.Test = function(){ // test support localStorage! 
     return typeof localStorage == typeof {}; 
    }; 

    this.Clear = function(index){ 
     if(typeof index === "undefined"){ 
     localStorage = {}; 
     } else { 
     localStorage[index] = JSON.stringify({data : []}); 
     } 
    }; 
} 

// example: 
var x = new DB(); // new data base 
if(!x.Test()) alert('Error!'); // not support! 
x.Write('food', ['food','bar','google']); // write data 
console.log(x.Read('food')); // get data! 

x.Clear('food'); // clear data! 
console.log(x.Read('food')); // get data! 
Verwandte Themen