2016-07-09 8 views
0

Ich muss Schlüsselwert inkrementieren, wenn ich Daten in LocalStorage speichern, da, wenn ich auf die Schaltfläche Taste für alle Datensätze gleich ist und Datensatz nur aktualisieren, erstellt nicht neu. Ich weiß, dass ich das mit Schließungen machen kann, aber ich bin frisch in JS und weiß nicht, wie ich es richtig machen soll.Inkrementieren Schlüsselwert zum Speichern von Daten im lokalen Speicher

(function() { 

window.onload = function() { 
    document.getElementById('buttonCreate').onclick = function() { 
     var topicValue = document.getElementById("create-topic").value; 
     var statusValue = document.getElementById("create-status").value; 
     var descriptionValue = document.getElementById("create-description").value; 
     var key = 0; 
     var storage = new Storage(); 
     var ticket = { 
      topic: topicValue, 
      status: statusValue, 
      description: descriptionValue 
     }; 
     storage.set(key, ticket); 
     return (function() { 
      key++; 
      return key; 

     }()); 
    } 
} 

})(); 

function Storage() { 
    this._ITEMS_DESCRIPTOR = 'items'; 
} 
Storage.prototype.get = function() { 
    var fromStorage = localStorage.getItem(this._ITEMS_DESCRIPTOR); 
    return fromStorage ? JSON.parse(fromStorage) : []; 
}; 
Storage.prototype.set = function(key, items) { 
    localStorage.setItem(key, JSON.stringify(items)); 
}; 
+0

Als ersten Schritt müssen Sie Ihren Code formatieren, damit er besser lesbar ist. (ex http://www.danstools.com/javascript-beautify/) –

+0

Sie müssen hasTicket = true oder false, wenn (hasTicket) // aktualisieren sonst in Storage.Why nicht versuchen, dies zu tun? –

+0

Ich sehe keine Schließung in Ihrem Code, nur unnötige sofort aufgerufene Funktionsausdrücke ohne Closure-Variablen .. es ist auch nicht klar, ob Sie Schlüssel nur während 1 Sitzung oder zwischen Sitzungen inkrementieren => lesen Sie den neuesten Schlüssel im Speicher vor der Einstellung ein neuer Schlüssel – Aprillion

Antwort

-1

Sie müssen die Variable vor der Funktion deklarieren, um den Wert zu speichern und 1+ hinzuzufügen.

(function() { 

    window.onload = function() { 
    var key = 0; //move var key to here 
    document.getElementById('buttonCreate').onclick = function() { 
     var topicValue = document.getElementById("create-topic").value; 
     var statusValue = document.getElementById("create-status").value; 
     var descriptionValue = document.getElementById("create-description").value; 
     // var key = 0; remove these line 
     var storage = new Storage(); 
     var ticket = { 
     topic: topicValue, 
     status: statusValue, 
     description: descriptionValue 
     }; 
     storage.set(key, ticket); 
     return (function() { 
     key++; 
     return key; 

     }()); 
    } 
    } 

})(); 
+0

das funktioniert nicht –

+0

@ R.Proz erstellen Sie einen Codepen und zeigen Sie mir den vollständigen Code –

Verwandte Themen