Wieso funktioniert mein localStorage nicht?
//addListFunction
function addList() {
var txt = input.value;
if(txt == ''){
alert('Bitte etwas eingeben!');
}else{
const myli = document.createElement('li'); //create <li> node!
myli.innerHTML = txt;
list.insertBefore(myli,list.childNodes[0]);
input.value = '';
localStorage.setItem('listenElement', txt);
localStorage.getItem(localStorage.key(txt));
//createSpan
const mySpan = document.createElement('span');
mySpan.innerHTML = 'x';
myli.appendChild(mySpan);
//delButtons
const close = document.querySelectorAll('span');
for(let i = 0; i < close.length; i++) {
close[i].addEventListener('click', (e) => {
close[i].parentElement.remove();
})
input.value = '';
}
}
Ich arbeite zum ersten mal mit Localstorage..und verstehe nicht wieso meine Listeneinträge nicht abgespeichert werden...
Abgespeichert werden diese nur aber wenn ich die Seite neu Lade verschwinden diese gleich wieder.
3 Antworten
- Dein Skript überschreibt den Eintrag immer wieder. Das heißt, du speicherst maximal einen Wert.
- Da du nichts Weiteres geteilt hast, würde ich einmal hinterfragen, ob du überhaupt eine Logik implementiert hast, die beim Laden der Seite gespeicherte Einträge aus dem Storage laden und in die Liste einfügen würde.
- Deine Seite solltest du über eine Domain aufrufen (falls du das nicht bereits tust). Das heißt, du benötigst auch einen Webserver, der die Seite für dich ausspielt.
- Diese Zeile ist redundant und generell wohl nicht sonderlich sinnvoll:
localStorage.getItem(localStorage.key(txt));
Den Rückgabewert verwertest du doch nirgendwo. Außerdem setzt der Aufruf voraus, dass txt in jedem Fall einem gültigen Index entspricht. Wenn du also immer nur einen Schlüssel speicherst (listenelement), gibt es immer nur einen Eintrag im Storage und auch nur einen gültigen Index: 0.
Habe nie etwas offizielles gefunden (oder gar gesucht, wenn ich ehrlich bin), nur Nutzer mit Ähnlichen Problemen und Lösungen auf Stackoverflow.
Ah okay Danke für die Hilfe!
Habe ein wenig weiterrecherchiert. Abspeichern kann ich es jetzt...nur sieht es noch nicht so schön aus.
Bei der 2. von dir:
Das hat mir geholfen! Also implementiere ich noch eine UpdateList()-Funktion um die gespeicherten Einträge zu laden.
Ave!
Abgespeichert werden diese nur aber wenn ich die Seite neu Lade verschwinden diese gleich wieder.
Startest du die Seite Lokal oder über eine Domain?
LocalStorage ist Domaingebunden.
In manchen Fällen kann das zu Problemen führen, wenn man die Seite Testweise lokal öffnet.
JavaScript kann ja auch nicht so einfach Daten auf der Festplatte speichern. Das muss man auf dem Server speichern (PHP) oder vielleicht als Cookie und dann laden, wenn die Seite geöffnet wird.
Wenn man keine Ahnung hat, sollte man lieber gar nichts schreiben...
Zu 4.:
Nicht unbedingt.
Es gab und gibt Bugs in Browsern, die die Daten nur abspeicherten, wenn sie einmalig geladen wurden.
Frag mich nicht wieso, hat mich bei einem Projekt Tage gekostet herauszufinden.