2016-08-01 17 views
0

Ich versuche, mehrere Werte (Titel) in einem einzigen Schlüssel zu speichern. Ich fordere den Benutzer auf, den Titel zuerst einzugeben und dann in "Titel" zu speichern. Wenn ich jedoch mehrere Werte eintrage, wird nur ein Wert an den Schlüssel 'Titel' angehängt. Außerdem heißt es, dass title.push keine Funktion ist.Schieben von Arrays; Speichern von mehr als einem Wert in einem einzigen Schlüssel

//get the title from user 
var title = prompt("What would you like your title to be?"); 
localStorage.setItem(title, editElem.innerHTML); 

//save the editor contents to local storage based on title 
document.getElementById("update").innerHTML = "Edits saved!"; 
var theDiv = document.getElementById("Contentable"); 
var content = document.createTextNode(title); 
theDiv.appendChild(content); 
var br = document.createElement("br"); 
theDiv.appendChild(br); 

//save the all titles in array so you know what documents exist 
var titles = localStorage.getItem("titles"); 
if(titles == null) 
    titles = new Array(); 
if(titles.indexOf(title) < 0) 
    titles.push(title); 
localStorage.setItem("titles", titles); 
+0

'if (titles.indexOf (Titel) <0)' immer wahr sein wird, für ein 'new Array()' –

+2

nie Klammern auslassen, vor allem mit schlechten Einzug. Es macht Ihren Code unlesbar – poe123

+0

'Titel' muss ein Array für' title.push' sein, um eine Funktion zu sein. Ich glaube nicht, dass das von 'localStorage.getItem' zurückgegeben wird, was normalerweise eine Zeichenfolge ist. - ** Sie müssen 'JSON.stringify' verwenden, wenn Sie JS-Objekte (z. B. HTML) in localStorage speichern möchten. ** – evolutionxbox

Antwort

0

Verwenden Sie das folgende Objekt, um Titel in den Speicher zu schieben. Beachten Sie, wie JSON.stringify konvertiert von Array zu string, und wie JSON.parse das Gegenteil tut.

var titlesStore = 
     { 
      Count: function() { 
       var stack = JSON.parse(localStorage.getItem("titles")); 
       if (!stack) 
        return 0; 
       return stack.length; 
      }, 
      Peek: function() { 
       var stack = JSON.parse(localStorage.getItem("title")); 
       if (!stack) 
        stack = []; 
       if (stack.length > 0) 
        return stack.pop(); 
      }, 
      Push: function (token) { 
       var stack = JSON.parse(localStorage.getItem("titles")); 
       if (!stack) 
        stack = []; 
       stack.push(token); 
       localStorage.setItem("title", JSON.stringify(stack)); 
      }, 
      // more methods to you might wish to implement: search, insert, etc. 
     } 

    // usage: 
    titlesStore.Push("new title"); // sets the last title 
    titlesStore.Peek(); // gets the last title ;