Having an issue with implementing Local Storage into my To-do list. I watched a ton of videos, understood the syntax etc. but I cannot figure out how to implement it into my code. What am trying to achieve is for the To-do app to save the tasks(make them stay at the site after reload) and store them inside the local storage.
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);
});
});
});
It appears the problem is that you save the list to the local storage before you add items to it.
And then try to change it. LocalStorage doesn't "update" when you change the variable you saved. It updates when you tell it to update, so you need to call localStorage.setItem whenever you add new items.
And remember that localStorage saves a String, so you gonna need to JSON.parse your result from localStorage.getItem to turn it back into JS object.