2016-05-27 11 views
1

Ich versuche, mehrere Elemente in dieser Funktion basieren, zu speichern:Wie werden mehrere Objekte im lokalen Speicher gespeichert, wenn auf eine Schaltfläche geklickt wird?

onclick="s(iId)" 

Dies ist die Funktion, die ich verwende:

function s(i_id) { 
    var items = []; 
    items.push(i_id); 
    localStorage.setItem("i", JSON.stringify(i)); 
} 

Das Problem ist, dass es nur eine ID zu speichern, wenn Die Schaltfläche wird bei jedem Klicken angeklickt und aktualisiert. Wie kann ich mehrere IDs speichern?

Antwort

3

Das Problem ist, Sie erstellen ein neues Array, drücken eine einzelne ID darin und speichern es dann jedes Mal, wenn die Funktion aufgerufen wird. Zwei Dinge, die Sie tun können, ist das Array items außerhalb der Funktion zu verschieben, und drücken Sie einfach auf es, bevor Sie sie speichern. Die zweite Möglichkeit besteht darin, den bereits gespeicherten Wert zu erhalten, ihn mit JSON.parse zu analysieren und ein neues Element darin zu verschieben, bevor es erneut gespeichert wird.

Ich schlage vor, mit Option 1 zu gehen, auch wenn es eine globale Variable erstellt. Es ist viel schneller.

var items = []; 

function store(item_id) { 
    items.push(item_id); 
    localStorage.setItem("item", JSON.stringify(items)); 
} 
+0

Es speichert immer noch keine neuen Werte. Es speichert nur einen. – ClauCece

+1

Nein? Es funktioniert für mich: https://jsfiddle.net/htre12g4/ – GMchris

+0

Yep! Danke, es funktioniert jetzt .. mein schlechtes. – ClauCece

0

Sie haben die Onclick so nennen:

onclick="store([itemId1, itemId2, itemId3])" 

und die Funktion:

function store(item_ids) { 
    var items = []; 
    for(var i = 0; i < item_ids.length; i++) { 
     items.push(item_ids[i]); 
    } 
    localStorage.setItem("item", JSON.stringify(items)); 
} 

Unter Berücksichtigung, wenn Sie auf jedem Klick neues Array Speicherung hinzufügen möchten ...

Verwandte Themen