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;
toDos = toDos.filter(toDo => toDo.id !== parseInt(li.id));
saveToDos();
li.remove();
}
//toDo.id !== parseInt(li.id) ํ์
์ด ๋ฌ๋ผ์ ์๋์ด ์ ๋๋ก ํ์ง์์ ๊ฐ์ ๋๋ฒํ์
์ผ๋ก ๋ณ๊ฒฝ
function paintToDo(newTodo) {
const li = document.createElement("li");
li.id = newTodo.id;
const span = document.createElement("span");
span.innerText = newTodo.text;
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 = "";
const newTodoObj = {
text:newTodo,
id: Date.now(),
}
toDos.push(newTodoObj);
paintToDo(newTodoObj)
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๋ ๋ฐฐ์ด์ ์๋ ๊ฐ๊ฐ์ ์์ดํ
๋ค์ ๋ํด functioํ ์ ์๊ฒ ํด์ค๋ค.
//toDoInput.value = "";(enter ํ๋ฉด ์นธ์ ๋นํ๋ฉด์ผ๋ก ๋น์ฐ๋๋ก ๋ง๋ ๋ค.)
//filter function -> new array
/* const arr = [1,2,3,4]
arr.filter(item => item > 2 )
[3,4]
const newArr = arr.filter (item =>item >2 )
arr
[1,2,3,,4]
newArr
[3,4]
๊ธฐ์กด์ ๋ฐฐ์ด์ ๋ณ๊ฒฝ์ํค๋๊ฒ์ด ์๋๋ผ ์๋ก์ด ๋ฐฐ์ด์ ๋ง๋ค์ด๋.*/