- saving todos/ loading todos
โ๏ธtoDos๋ฅผ JSON.stringify ์ฌ์ฉํ์ฌ ๋ฌธ์ํ ํด์ ์ ์ฅํ๊ณ ,
์ ์ฅํ ๋ด์ฉ์ ๋ค์ JSON.parse()๋ก ๋ฐฐ์ดํ ์์ผ forEach ๋ก
์ฃผ์ด์ง ๋ด์ฉ์ ์ ๊ทผํ ์์๋๋ก ํ์ฌ ๊ฐ๊ฐ์ ๋ํด ์คํ์ํจ๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก ์นํ์ด์ง๋ฅผ ์๋ก๊ณ ์นจํ์ฌ๋ ํ๋ฉด์์ todolist๊ฐ ํ์๋๊ณ
localstorage์ ์ ์ฅ๋์ด ์๋ค.
const toDoForm = document.getElementById("todo-form");
const toDoInput = toDoForm.querySelector("input");
const toDolist = document.getElementById("todo-list");
const TODOS_KEY = "todos";
let toDos = [];
function saveToDos(){
localStorage.setItem("TODOS_KEY", JSON.stringify(toDos))
}
//JSON.stringify: ์ด๋ค ๊ฒ์ด๋ stringํ ์์ผ์ค๋ค.
//JSON.parse():string์ ๋ฐฐ์ด๋ก ๋ฐ๊ฟ์ค๋ค.
//event.target์ ์ฌ์ฉํ๋ฉด ํ์ฌ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์์์ ์์ฑ๋ค์ ์ป์ ์ ์๋ค.
//Dom ๊ฐ์ฒด์ด๊ธฐ ๋๋ฌธ์ ๋ณ๊ฒฝ์ ์ฃผ๊ณ ์ถ๋ค๋ฉด Dom๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
//button ์์ฑ์ ๋ถ๋ชจ์์๋ก li๋ฅผ ๊ฐ๋ฅดํจ๋ค.
function deleteToDo(event) {
const li = event.target.parentElement;
li.remove();
}
function paintToDo(newTodo) {
const li = document.createElement("li");
const span = document.createElement("span");
span.innerText = newTodo;
const button = document.createElement("button");
button.innerText = "๐
๐ป";
button.addEventListener("click",deleteToDo)
li.appendChild(span);
li.appendChild(button);
toDolist.appendChild(li)
}
/* ์ญ์ ๊ธฐ๋ฅ๋ ๊ฐ๋ฅํ๋๋ก:span์ ๋ง๋ค์ด์ li ๋ด๋ถ์ ์์์ผ๋ก ๋ฃ์ ๊ทธ ๋ค์์ new ToDo์ ์
๋ ฅ๋ฐ์ ๊ฐ์ span๋ด๋ถ์ ๋ฃ์ */
function handleToDoSubmit(event) {
event.preventDefault();
const newTodo = toDoInput.value;
toDoInput.value = "";
toDos.push(newTodo);
paintToDo(newTodo)
saveToDos();
}
toDoForm.addEventListener("submit",handleToDoSubmit);
const savedToDos =localStorage.getItem(TODOS_KEY);
if(savedToDos !== null) {
const parsedToDos = JSON.parse(savedToDos);
toDos = parsedToDos;
parsedToDos.forEach(paintToDo);
}
//JS๋ ๋ฐฐ์ด์ ์๋ ๊ฐ๊ฐ์ ์์ดํ
๋ค์ ๋ํด functionํ ์ ์๊ฒ ํด์ค๋ค.
//toDoInput.value = "";(enter ํ๋ฉด ์นธ์ ๋นํ๋ฉด์ผ๋ก ๋น์ฐ๋๋ก ๋ง๋ ๋ค.)