π λ΄κ° μμ±ν μ½λ
const toDoForm = document.querySelector('#todo-form');
const toDoInput = document.querySelector('#todo-form input');
const toDoList = document.querySelector('#todo-list');
function ontoDoSubmit(event) {
event.preventDefault();
const toDo_li = document.createElement('li');
toDo_li.innerText = toDoInput.value;
toDoList.appendChild(toDo_li);
toDoInput.value = null;
}
toDoForm.addEventListener('submit', ontoDoSubmit);
π κ°μ μ½λ
todoInputμ toDoForm μμμ μ°Ύμλ€
μ΄λ²€νΈ νΈλ€λ¬ ν¨μμμ todoλ₯Ό νλ©΄μ νμνλ μ½λλ₯Ό λ°λ‘ λΉΌλ΄ paintToDo() ν¨μλ₯Ό λ§λ€μλ€
li μμ ν΄μ§ν΅λ λ§λ€κΈ° μν΄ todo ν μ€νΈλ₯Ό λ°λ‘ λ£μ§ μκ³ spanμ λ£μλ€
const toDoForm = document.querySelector('#todo-form');
const toDoInput = toDoForm.querySelector('input');
const toDoList = document.querySelector('#todo-list');
function paintToDo(toDo) {
const li = document.createElement('li');
const span = document.createElement('span');
li.appendChild(span);
span.innerText = toDo;
toDoList.appendChild(li);
}
function onToDoSubmit(event) {
event.preventDefault();
const newToDo = toDoInput.value;
toDoInput.value = '';
paintToDo(newToDo);
}
toDoForm.addEventListener('submit', onToDoSubmit);
const toDoForm = document.querySelector('#todo-form');
const toDoInput = toDoForm.querySelector('input');
const toDoList = document.querySelector('#todo-list');
// μμ λ²νΌ ν΄λ¦ μ΄λ²€νΈ 리μ€λ ν¨μ
function deleteToDo(event) {
event.target.parentElement.remove();
}
function paintToDo(toDo) {
const li = document.createElement('li');
const span = document.createElement('span');
span.innerText = toDo;
// μμ λ²νΌ μΆκ°
const delBtn = document.createElement('button');
delBtn.innerText = 'β';
delBtn.addEventListener('click', deleteToDo);
li.appendChild(span);
li.appendChild(delBtn);
toDoList.appendChild(li);
}
function onToDoSubmit(event) {
event.preventDefault();
const newToDo = toDoInput.value;
toDoInput.value = '';
paintToDo(newToDo);
}
toDoForm.addEventListener('submit', onToDoSubmit);
π λ‘컬 μ€ν 리μ§μ to do list μ μ₯ ν λΆλ¬μ€κΈ°
[TIL] 211011 4) μ§λ ¬ν μ°Έκ³
μλ‘κ³ μΉ¨μ ν΄λ μμ±ν to do listκ° μμ΄μ§μ§ μλλ‘ νκ³ μ ν¨
todos λ°°μ΄
μ λ§λ€μ΄ todoλ₯Ό μμ±ν λλ§λ€ κ·Έ ν
μ€νΈλ₯Ό push ν΄μ€λ€
toDoFormμ submit μ΄λ²€νΈκ° λ°μν λλ§λ€ todos λ°°μ΄μ κ° μμλ€μ λ‘컬 μ€ν 리μ§μ μ μ₯νλ€. μ΄λ λ‘컬 μ€ν 리μ§μλ 무쑰건 λ¬Έμμ΄λ‘ λ³νλμ΄ μ μ₯λλ€. μ΄λ κ·Έλ₯ todosλ₯Ό μ
λ ₯νλ κ² μλλΌ JSON.stringify(todos)
λ₯Ό μ
λ ₯ν΄ λ°°μ΄ νμμ λ¬Έμμ΄λ‘ μ μ₯νλλ‘ νλ€.
κ·Έ ν λ‘컬 μ€ν 리μ§μ todosκ° μ‘΄μ¬νλ€λ©΄, JSON.parse()λ₯Ό μ΄μ©ν΄ λ°°μ΄ νμμ todos λ¬Έμμ΄μ λ€μ λ°°μ΄λ‘ λ°κΏμ€λ€.
κ·Έλ κ² λ°κΎΌ todos λ°°μ΄μ forEach() λ©μλλ₯Ό μ€νν¨μΌλ‘μ¨ λ°°μ΄μ κ° μμ μ¦, κ° todo listλ§λ€ paintToDo() ν¨μλ₯Ό μ€νν΄ νλ©΄μ νμλλλ‘ νλ€.
const toDoForm = document.querySelector('#todo-form');
const toDoInput = toDoForm.querySelector('input');
const toDoList = document.querySelector('#todo-list');
const TODOS_KEY = 'todos';
const todos = []; // todos λ°°μ΄ μμ±
function saveToDos() {
localStorage.setItem(TODOS_KEY, JSON.stringify(todos)); // λ°°μ΄ νμμ λ¬Έμμ΄λ‘ λ³νν΄ μ μ₯
}
function deleteToDo(event) {
event.target.parentNode.remove();
}
function paintToDo(toDo) {
const li = document.createElement('li');
const span = document.createElement('span');
span.innerText = toDo;
const delBtn = document.createElement('button');
delBtn.innerText = 'β';
delBtn.addEventListener('click', deleteToDo);
li.appendChild(span);
li.appendChild(delBtn);
toDoList.appendChild(li);
}
function onToDoSubmit(event) {
event.preventDefault();
const newToDo = toDoInput.value;
toDoInput.value = '';
todos.push(newToDo); // μλ‘μ΄ todoλ₯Ό todos λ°°μ΄μ push
paintToDo(newToDo);
saveToDos(); // λ‘컬 μ€ν 리μ§μ to do list μ μ₯
}
toDoForm.addEventListener('submit', onToDoSubmit);
// λ‘컬 μ€ν 리μ§μμ todos λΆλ¬μ€κΈ°
const savedToDos = localStorage.getItem(TODOS_KEY);
if (savedToDos) {
const parsedToDos = JSON.parse(savedToDos); // λ€μ λ°°μ΄ νμμΌλ‘ λ³ν
parsedToDos.forEach(todo => paintToDo(todo)); // λ°°μ΄μ κ° μμ(todo)λ₯Ό νλ©΄μ λμ
}
μ΄μ todosλ₯Ό μ λ ₯ ν λ€μ μλ‘κ³ μΉ¨μ ν΄λ todosκ° μ¬λΌμ§μ§ μλλ€. κ·Έλ¬λ, todosλ₯Ό μΆκ°ν ν μλ‘κ³ μΉ¨μ νλ©΄ μΆκ°ν todosλ§ λ³΄μ΄κ³ , μ²μμ μ λ ₯ν todosλ 보μ΄μ§ μλλ€. λ‘컬 μ€ν 리μ§λ₯Ό 보면 μΆκ°ν todosλ§ μ μ₯λμ΄ μλ κ±Έ νμΈν μ μλ€.
μ΄λ todos λ°°μ΄μ΄ μ ν리μΌμ΄μ
μ΄ μμλ λ νμ λΉ λ°°μ΄ μνμ΄κΈ° λλ¬Έμ΄λ€. μλ‘κ³ μΉ¨ ν λλ§λ€ todos λ°°μ΄μ΄ λΉ λ°°μ΄λ‘ μ΄κΈ°ν
λκΈ° λλ¬Έμ, μ΄μ μ λ‘컬 μ€ν 리μ§μ μ μ₯νλ todosκ° μμ΄μ§κ² λλ κ²μ΄λ€.
μ΄ λ¬Έμ λ λ‘컬 μ€ν 리μ§μ todosκ° μλ€λ©΄ todos λ°°μ΄μ parsedToDosλ‘ μ
λ°μ΄νΈ
νλ κ²μΌλ‘ ν΄κ²°ν μ μλ€. μ΄λ κ² νλ©΄ μλ‘κ³ μΉ¨μ νμ λ λ‘컬 μ€ν 리μ§μλ todosκ° μμΌλ―λ‘ todosλ₯Ό parseTodosλ‘ λ°κΎΈκ² λλ€. λ°λΌμ, todoλ₯Ό μΆκ°ν΄λ parseTodos μνμμ μΆκ°νλ κ²μ΄λ―λ‘ μ΄μ μ μ
λ ₯ν todosκ° μμ΄μ§μ§ μλλ€.
let todos = []; // letμΌλ‘ λ°κΎΌ ν
const savedToDos = localStorage.getItem(TODOS_KEY);
if (savedToDos) { // λ‘컬 μ€ν 리μ§μ todosκ° μλ€λ©΄
const parsedToDos = JSON.parse(savedToDos);
todos = parsedToDos; // todos λ°°μ΄μ μ
λ°μ΄νΈ
parsedToDos.forEach(todo => paintToDo(todo));
}