Tengo un problema con la implementación del almacenamiento local en mi lista de tareas pendientes. Vi un montón de videos, entendí la sintaxis, etc., pero no sé cómo implementarlo en mi código. Lo que estoy tratando de lograr es que la aplicación To-do guarde las tareas (que permanezcan en el sitio después de recargarlas) y las almacene dentro del almacenamiento local.
window.addEventListener('load', () => { const form = document.querySelector("#new-task-form"); const input = document.querySelector("#new-task-input"); const list_el = document.querySelector("#tasks"); const storeTasks = []; localStorage.setItem('Stored Task', JSON.stringify(storeTasks)); storeTasks.append(input.value); localStorage.getItem('Stored Task'); console.log(storeTasks); /*localStorage.setItem('tasks', "list_el"); localStorage.getItem('list_el');*/ console.log(list_el); form.addEventListener('submit', (e) => { e.preventDefault(); const task = input.value; if (!task) { alert("Add onto the bucketlist!"); return ""; } const task_el = document.createElement('div'); task_el.classList.add('task'); const task_content_el = document.createElement('div'); task_content_el.classList.add('content'); task_el.appendChild(task_content_el); const task_input_el = document.createElement('input'); task_input_el.classList.add('text'); task_input_el.type = 'text'; task_input_el.value = task; task_input_el.setAttribute('readonly', 'readonly'); task_content_el.appendChild(task_input_el); const task_actions_el = document.createElement('div'); task_actions_el.classList.add('actions'); const task_edit_el = document.createElement('button'); task_edit_el.classList.add('edit'); task_edit_el.innerText = 'Edit'; const task_delete_el = document.createElement('button'); task_delete_el.classList.add('delete'); task_delete_el.innerText = 'Delete'; task_actions_el.appendChild(task_edit_el); task_actions_el.appendChild(task_delete_el); task_el.appendChild(task_actions_el); list_el.appendChild(task_el); input.value = ''; task_edit_el.addEventListener('click', (e) => { if (task_edit_el.innerText.toLowerCase() == "edit") { task_edit_el.innerText = "Save"; task_input_el.removeAttribute("readonly"); task_input_el.focus(); } else { task_edit_el.innerText = "Edit"; task_input_el.setAttribute("readonly", "readonly"); } }); task_delete_el.addEventListener('click', (e) => { list_el.removeChild(task_el); }); }); });Parece que el problema es que guarda la lista en el almacenamiento local antes de agregarle elementos.
Y luego intenta cambiarlo. LocalStorage no se "actualiza" cuando cambia la variable que guardó. Se actualiza cuando le indica que se actualice, por lo que debe llamar a localStorage.setItem cada vez que agrega nuevos elementos.
Y recuerde que localStorage guarda una cadena, por lo que necesitará JSON. parse su resultado de localStorage.getItem para volver a convertirlo en un objeto JS.