En este código, recibo un error como Uncaught TypeError: No se pueden leer las propiedades de nulo (leyendo 'push')
console.log("HI"); let addbtn = document.getElementById("addbtn"); addbtn.addEventListener("click", function (e) { let addtxt = document.getElementById("addtxt"); let notes = localStorage.getItem("notes"); if (notes == null) { notesObj = []; } else { notesObj = JSON.parse(notes); } notesObj.push(addtxt.value); //getting error at this point. Don't know why localStorage.setItem("notes", JSON.stringify(notesObj)); addtxt = ""; console.log(notesObj); });
mira esto espero que solucione tu problema
let addbtn = document.getElementById("addbtn"); console.log('addbtn ', addbtn); addbtn?.addEventListener("click", function (e) { let addtxt = document.getElementById("addtxt"); let notes = localStorage.getItem("notes"); notesObj = JSON.parse(notes ?? '[]'); console.log('addtxt.value ', addtxt?.value); notesObj.push(addtxt.value); //getting error at this point. Don't know why localStorage.setItem("notes", JSON.stringify(notesObj)); addtxt = ""; console.log(notesObj); });
El problema es que tiene la cadena 'null'
en su almacenamiento local.
Sí, se compara con null
, pero las notes
siguen siendo JSON en este punto, y aparentemente se pueden codificar como null
como JSON. Por lo tanto, también deberá verificar si hay 'null'
como cadena.
O, más fácil: Reemplace el conjunto if
con algo como esto:
const notesObj = (notes && JSON.parse(notes)) ?? []
Si también desea ser resistente contra JSON no válido en el almacenamiento local, puede usar esto:
let notesObj try { notesObj = JSON.stringify(notes) ?? [] } catch(e) {}
para solucionar este problema, use localstorage.clear() en la consola. eso es todo.