TO DO List

TO DO List ๋งŒ๋“ค๊ธฐ

<div>
    <form class="js-to-do to-do">
        <input class="js-add-to-do to-do__add-to-do" placeholder="Write a To Do here" type="text" />
    </form>
    <ul class="js-list list"></ul>
</div>
const form = document.querySelector(".js-to-do"),
  input = document.querySelector(".js-add-to-do"),
  list = document.querySelector(".js-list");

let toDos = [];

function persistToDos() {
  const stringToDo = JSON.stringify(toDos);
  localStorage.setItem("toDos", stringToDo);
}

function saveToDo(text) {
  const toDoObject = {
    id: toDos.length + 1,
    value: text
  };
  toDos.push(toDoObject);
  persistToDos();
}

function handleDelete(event) {
  const target = event.target;
  const li = target.parentElement;
  const ul = li.parentElement;
  const toDoId = li.id;
  ul.removeChild(li);
  toDos = toDos.filter(function(toDo) { // filter ๋ชจ๋“  ์•„์ดํ…œ์„ ํ†ตํ•ด ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ture์ธ ์•„์ดํ…œ๋งŒ ๊ฐ€์ง€๊ณ  ์ƒˆ๋กœ์šด array๋ฅผ ๋งŒ๋“ฌ
    return toDo.id !== parseInt(toDoId); // ๋ชจ๋“  toDos๊ฐ€ li ์˜ id ์™€ ๊ฐ™์ง€ ์•Š์„๋•Œ 
  });
  persistToDos();
}

function addToDo(text) {
  const toDo = document.createElement("li");
  toDo.className = "toDo";
  toDo.id = toDos.length + 1;
  const deleteBtn = document.createElement("span");
  deleteBtn.innerHTML = "โŒ";
  deleteBtn.className = "toDo__button";
  deleteBtn.addEventListener("click", handleDelete);
  const label = document.createElement("label");
  label.innerHTML = text;
  toDo.appendChild(deleteBtn);
  toDo.appendChild(label);
  list.appendChild(toDo);
  saveToDo(text);
}

function onSubmit(event) {
  event.preventDefault();
  const value = input.value;
  input.value = "";
  addToDo(value);
}

function loadToDos() {
  const loadedToDos = localStorage.getItem("toDos");
  if (loadedToDos !== null) {
    const parsedToDos = JSON.parse(loadedToDos);
    parsedToDos.forEach(function(toDo) { // list์— ์žˆ๋Š” ๋ชจ๋“  ltem์„ ์œ„ํ•œ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰์‹œํ‚ด 
      addToDo(toDo.value);
    });
  }
  return;
}

function init() {
  loadToDos();
}

form.addEventListener("submit", onSubmit);

init();

filter

๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉฐ ์š”์†Œ๋งˆ๋‹ค ์กฐ๊ฑด ํ™•์ธ ํ›„ ๐Ÿ‘‰ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์›์†Œ๋“ค๋กœ ๊ตฌ์„ฑ๋œ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด ๋ฆฌํ„ด

๊ธฐ๋ณธ์„ ์–ธ ๋ฐฉ์‹

์˜ˆ์ œ

forEach

๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ๋ฐ˜๋ณตํ•˜๋ฉฐ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰

๊ธฐ๋ณธ์„ ์–ธ ๋ฐฉ์‹

์˜ˆ์ œ

Last updated

Was this helpful?