2016-07-09 18 views
0

Ich versuche, Daten in den lokalen Speicher zu speichern, wenn die Schaltfläche geklickt wird. Aber wenn ich auf die Schaltfläche immer 0 klicke und ich den Datensatz aktualisiere, erzeuge keinen neuen Datensatz, da key = 0. Ich habe increment Schlüsselwert durch Schließungen versucht, aber ich bin sehr neu in JS und meine "Rückkehr" funktioniert nicht. (Ändern Sie den Schlüsselwert beim Klicken auf die Schaltfläche

function() { 

    window.onload = function() { 
     var key = 0; 
     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 storage = new Storage(); 
      var ticket = { 
       topic: topicValue, 
       status: statusValue, 
       description: descriptionValue 
      }; 
      storage.set(key, ticket); 
      return (function() { 

       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)); 
}; 
+1

Warum 'Set' nehmen Sie die angegebenen Schlüssel verwenden, aber' get' verwendet immer '_ITEMS_DESCRIPTOR' ? Wie macht Sie rufen die Artikel ab, die Sie mit 'set' gespeichert haben? – Barmar

Antwort

0

Sie benötigen key außerhalb der onclick Funktion zu initialisieren, sonst wird es auf 0 zurückgesetzt jedes Mal, wenn Sie klicken. Sie haben nicht den Zuwachs in einer internen Funktion tun müssen.

Es gibt auch keine Notwendigkeit, jedes Mal erstellen Sie eine neue Storage klicken, können Sie, dass einmal am Anfang als auch erstellen.

function() { 
    var key = 0; 
    var storage = new Storage(); 
    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 ticket = { 
       topic: topicValue, 
       status: statusValue, 
       description: descriptionValue 
      }; 
      storage.set(key, ticket); 
      key++; 
     } 
    } 
})(); 
Verwandte Themen