2016-07-26 24 views
0

Ich habe derzeit einen Editor, der Benutzern ermöglicht, ihre Änderungen zu speichern, indem sie localstorage und eine Eingabeaufforderung verwenden, die sie nach dem Titel ihrer Bearbeitung fragt. Ich habe den Titel an eine Tabelle angehängt, auf die er zugreifen kann.Verknüpfen eines angehängten Titels

Einfach gesagt, wenn sie die Bearbeitung als "Thema 1" speichern, wird das Wort "Thema 1" am Seitenrand der Webseite angezeigt. Jetzt frage ich mich, wie ich dieses "Thema 1" mit ihren Bearbeitungen verknüpfen kann? So dass, wenn sie darauf klicken, der Editor ihre Bearbeitungen zeigen und ihnen erlauben wird, sie wieder zu bearbeiten?

<!-- Function to save the user's input inside editor1 --> 
    function saveEdits() { 
     var editElem = document.getElementById("editor1"); 
     var userVersion = editElem.innerHTML; 
     localStorage.userEdits = userVersion; 
     var title = prompt("What would you like your title to be?"); 
     localStorage.title = title; 
     document.getElementById("update").innerHTML = "Edits saved!"; 
     var theDiv = document.getElementById("Contentable"); 
     var content = document.createTextNode(title); 
     theDiv.appendChild(content); 
    } 

<!-- Function to check if the user has any saved input --> 
    function checkEdits() { 
     if(localStorage.userEdits != null) 
     document.getElementById("editor1").innerHTML = localStorage.userEdits; 
    } 

Antwort

0

Sie führen kann dies eine Onclick-Funktion auf Ihrem editor1 Element mit

var editElem = document.getElementById("editor1"); 
editElem.innerHTML = localStorage.userEdits; 
editElem.onclick = function() { 
     /**Redirect them to the page where their edit is 
      If the edit is in the form of an html form 
      display it as follows**/ 
     document.getElementById("your form id").style.display="block"; 
}; 
0

Die Art und Weise Ihren Code zur Zeit geschrieben wird, wird es immer nur ein gespeichertes Dokument (localStorage.userEdits) sein, so deshalb keine Möglichkeit, einen Titel mit einem Dokument verknüpfen. Sie müssen Ihre Speicherstruktur ändern. Betrachten wir etwa wie folgt:

<!-- Function to save the user's input inside editor1 --> 
function saveEdits() { 
    var editElem = document.getElementById("editor1"); 
    //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!"; 
    //save the all titles in array so you know what documents exist 
    var titles = localStorage.getItem("titles"); 
    if(titles == null) //no titles saved 
     titles = new Array(); 
    if(titles.indexOf(title) < 0) //if the title is not already saved 
     titles.push(title); //add it to array 
    localStorage.setItem("titles", titles); //save the titles array to localStorage 
    ... 
} 

Der obige Code ermöglicht es Ihnen, durch mehrere Dokumente zu speichern, um sie im lokalen Speicher zu speichern, basierend auf Titel, dann eine Reihe von Titeln in lokalen Speicher zu speichern. Um die Änderungen zu laden für einen bestimmten Titel folgenden verwenden:

<!-- Function to load user's input for given title --> 
function loadEdits(title) { 
    //load useredit for title from local storage 
    var userEdits = localStorage.getItem(title); 
    var editElem = document.getElementById("editor1"); 
    editElem.innerHTML = userEdits; 
} 
+0

Ich habe in dem Array-Code hinzugefügt, aber ein Fehler auftaucht: Uncaught Typeerror: titles.push ist keine Funktion – cosmo

+0

Bekommen Sie den Abschnitt oben der Push, der prüft, ob 'titles == null 'und wenn ja, ein neues Array erstellt? – AlienHoboken

+0

Ja, es ist in meinem Code. Ich habe es mehrmals überprüft - es ist kein Problem mit dem Kopieren und Einfügen. – cosmo

Verwandte Themen