Frontend/JavaScript
바닐라 JS로 크롬 앱 만들기 ( #7 TO DO LIST(1) )
:_:
2022. 4. 22. 18:58
1. Setup
index.html
todo.js
const toDoFrom = document.getElementById("todo-form");
const toDoInput = document.querySelector("#todo-form input");
const toDoList = document.getElementById("todo-list");
function handleToDoSubmit(event) {
// submit 의 기본동작인 새로고침이 안되도록
event.preventDefault();
const newTodo = toDoInput.value;
toDoInput.value = ""; // toDoInput 에 입력한 내용 지우기
}
toDoFrom.addEventListener("submit", handleToDoSubmit);
2. Adding ToDos
작성한 todo 텍스트를 ul > li > span 에 넣기
todo.js
const toDoFrom = document.getElementById("todo-form");
const toDoInput = document.querySelector("#todo-form input");
const toDoList = document.getElementById("todo-list");
// toDo를 그리는 역할
function paintToDo(newTodo){
const li = document.createElement("li");
const span = document.createElement("span");
// li 안에 span 넣기
li.appendChild(span);
span.innerText = newTodo;
toDoList.appendChild(li);
}
function handleToDoSubmit(event) {
// submit 의 기본동작인 새로고침이 안되도록
event.preventDefault();
const newTodo = toDoInput.value;
toDoInput.value = ""; // toDoInput 에 입력한 내용 지우기
paintToDo(newTodo);
}
toDoFrom.addEventListener("submit", handleToDoSubmit);
결과
3. Deleting To Dos
x 버튼을 만들고 클릭시 삭제되도록
const toDoFrom = document.getElementById("todo-form");
const toDoInput = document.querySelector("#todo-form input");
const toDoList = document.getElementById("todo-list");
// todo 삭제
function deleteToDo(event){
// event.target.parentElement : 클릭한 <button> 의 부모태그
const li = event.target.parentElement;
li.remove();
}
// toDo를 그리는 역할
function paintToDo(newTodo){
const li = document.createElement("li");
const span = document.createElement("span");
const button = document.createElement("button"); // 삭제하는 버튼 추가
span.innerText = newTodo;
button.innerText = "❌";
li.appendChild(span);
li.appendChild(button);
toDoList.appendChild(li);
button.addEventListener("click", deleteToDo); // x 버튼 클릭 시
}
function handleToDoSubmit(event) {
// submit 의 기본동작인 새로고침이 안되도록
event.preventDefault();
const newTodo = toDoInput.value;
toDoInput.value = ""; // toDoInput 에 입력한 내용 지우기
paintToDo(newTodo);
}
toDoFrom.addEventListener("submit", handleToDoSubmit);
결과 확인
4. Saving To Dos
toDo localStorage 사용해서 저장하기
1. toDos 배열을 만들고 todo 를 그리기 전에 만든 배열에 push
2. toDos 를 localStorage 에 넣기 (localStorage 엔 array를 넣지 못하고 text 만 넣을 수 있으므로 JSON.stringify 사용)
JSON.stringify : JS object 나 array 나 어떤 것이든 string 으로 바꿔주는 기능
const toDoFrom = document.getElementById("todo-form");
const toDoInput = document.querySelector("#todo-form input");
const toDoList = document.getElementById("todo-list");
const TODOS_KEY = "todos";
const toDos = [];
// localStorage에 저장
function saveToDos() {
// 배열을 stringify로 저장해서 배열 형태로
localStorage.setItem(TODOS_KEY, JSON.stringify(toDos));
}
// todo 삭제
function deleteToDo(event){
// event.target.parentElement : 클릭한 <button> 의 부모태그
const li = event.target.parentElement;
li.remove();
}
// toDo를 그리는 역할
function paintToDo(newTodo){
const li = document.createElement("li");
const span = document.createElement("span");
const button = document.createElement("button"); // 삭제하는 버튼 추가
span.innerText = newTodo;
button.innerText = "❌";
li.appendChild(span);
li.appendChild(button);
toDoList.appendChild(li);
button.addEventListener("click", deleteToDo); // x 버튼 클릭 시
}
function handleToDoSubmit(event) {
// submit 의 기본동작인 새로고침이 안되도록
event.preventDefault();
const newTodo = toDoInput.value;
toDoInput.value = ""; // toDoInput 에 입력한 내용 지우기
toDos.push(newTodo);
paintToDo(newTodo);
saveToDos();
}
toDoFrom.addEventListener("submit", handleToDoSubmit);
결과 확인
' 노마드 코드 - 바닐라 JS로 크롬 앱 만들기' 공부하면서 정리한 내용입니다.
728x90