2016-12-06 1 views
0

Ich bekomme einen TypeError, der sagt, dass mein Array null ist, wenn ich versuche, einen neuen Wert hineinzuschieben.Array ist Null, wenn versucht wird, .push nach localstorage zu verwenden

//first off.. 
var sillyArray= ["dummy"]; 
localStorage.setItem("sillyArray", JSON.stringify(sillyArray)); 

//I later used this 
sillyArray = JSON.parse(localStorage.getItem("sillyArray")); 
//the error is here 
sillyArray.push("yes"); 
localStorage.setItem("sillyArray", JSON.stringify(sillyArray)); 

Kann ich das nicht pushen oder parsen?

(Edited ein Buchungsfehler)

+0

Sind Sie sicher, dass Ihr Code in der Reihenfolge ausgeführt wird, in der er sich befindet? (Vielleicht haben Sie ein paar asynchrone Dinge?) Wenn Sie '.getItem()' * vor * Aufruf von '.setItem()' aufgerufen haben, würde es 'null' zurückgeben. – nnnnnn

+0

Wäre das die einzige Möglichkeit? Ich habe das localStorage.setItem ("sillyArray", JSON.stringify (sillyArray)); In einer if-Anweisung, die ich fast positiv ausführe, werde ich trotzdem weiter darauf eingehen. – Sausejii

+0

Niemals, das ist es absolut. Danke, nun, um genau herauszufinden, was damit nicht stimmt. Prost! – Sausejii

Antwort

2

Die yesArray war nie definded. Deshalb ist es unmöglich, .push().

+1

Wenn es nie erklärt wurde, kann es nicht "null" sein, es wird "undefiniert". Aber es wird einen Referenzfehler geben, wenn Sie versuchen, '.push()' aufzurufen. – nnnnnn

+0

Ja. Durcheinander auf meinem Post, das 'yesArray' wird durch sillyArray in meinem Code ersetzt. Das Problem ist immer noch offensichtlich vorhanden. Beitrag bearbeiten, um es zu beheben. – Sausejii

0

Ja, Sie können, aber Sie versuchen, ein Element in eine undefined Var zu schieben, deshalb erhalten Sie eine TypeError.

Hier ist, wie Sie tun sollten, dass:

var array = ['dummy']; 
localStorage.setItem('someKey', JSON.stringify(array)); 
array = JSON.parse(localStorage.getItem('someKey')); 
array.push('foo'); 
localStorage.setItem('someKey', JSON.stringify(array)); 

dann, wenn Sie

console.log(JSON.parse(localStorage.getItem('someKey'))) 

der Ausgang wird tun, was Sie ["dummy", "foo"]

+0

Es wäre schön, zu erklären, was mit dem OP-Code falsch war, anstatt uns Zeile für Zeile (und Variablenname nach Variablenname) vergleichen zu lassen. – nnnnnn

+0

Meine schlechte, das ist immer noch nicht das Problem, ich hatte gerade die Namen des Arrays geändert, so dass es leichter zu identifizieren war (Dumm oder?), In dieser Situation wäre die yesArray.push eigentlich sillyArray.push – Sausejii

+0

@Sausejii der Code, der Ich habe Werke gepostet. Wenn Sie es versuchen möchten, kopieren Sie es in die Konsole Ihres Browsers. – mattias

0

Als Benutzer Nnnnnn sagte erwarten, ich hadn 't richtig ausgeführt mein localStorage.setItem("sillyArray", JSON.stringify(sillyArray));

Es saß ich n eine if-Anweisung (nicht abgebildet), die nicht ausgeführt wurde und die Null verursachte.

Danke Jungs!

Verwandte Themen