#7.0
이제 ToDo List
를 기능을 추가할 것이다. 먼저 코딩하기에 앞서 그 구현하고자 하는 기능이 어떠한
구조
나 모양
으로 설계
할 것인지 생각해야한다. ToDo List
는 텍스트를 입력하면 List에 추가되는 구조를 가질 것이며 다음과 같이 HTML에 코드를 추가한다.
<form action="" id="todo-form">
<input type="text" placeholder="Write a To Do and Press Enter" required />
</form>
<ul id="todo-list"></ul>
여기서 ToDo List의 내용을 표현하기위애 ul tag
아래에 li tag
가 있어야하지만 추가하지 않는 이유
는 li를 #6 QUOTES AND BACKGROUND
에서 했던 JS에서 tag를 생성하고 HTML에 추가하는 구조로 설계하기 위함이다.
const toDoForm = document.getElementById("todo-form");
const toDoInput = toDoForm.querySelector("input");
const toDoList = document.getElementById("todo-list");
function handleToDoSubmit(event) {
event.preventDefault();
const newTodo = toDoInput.value;
toDoInput.value = "";
}
toDoForm.addEventListener("submit", handleToDoSubmit);
위 코드는 ToDo 입력창에 할일을 적고 submit을 하면 Input창의 내용을 지우는 코드이다.
#7.1
위 코드를 다음과 같이 추가하여 ToDo List에 목록을 추가
하는 기능을 더했다.
const toDoForm = document.getElementById("todo-form");
const toDoInput = toDoForm.querySelector("input");
const toDoList = document.getElementById("todo-list");
function paintToDo(newTodo) {
const li = document.createElement("li");
const span = document.createElement("span");
li.appendChild(span);
span.innerHTML = newTodo;
toDoList.appendChild(li);
}
function handleToDoSubmit(event) {
event.preventDefault();
const newTodo = toDoInput.value;
toDoInput.value = "";
paintToDo(newTodo);
}
toDoForm.addEventListener("submit", handleToDoSubmit);
paintToDog
함수는 JS에서 HTML tag을 만들어 ul tag에 요소(element)를 추가하는 코드이다. 코드를 실행하면 paintToDog
함수를 통해 ul에 tag가 추가되는걸 확인할 수 있는데 li>span
을 하는 이유는 li안에 더 다양한 기능을 넣기 위해 li tag 안에 span을 추가한 것이다.
#7.2
이제 할일 목록을 삭제하는 버튼을 다음과 같이 구현한다.
const toDoForm = document.getElementById("todo-form");
const toDoInput = toDoForm.querySelector("input");
const toDoList = document.getElementById("todo-list");
function deleteToDo(event) {
const li = event.target.parentElement;
li.remove();
}
function paintToDo(newTodo) {
const li = document.createElement("li");
const span = document.createElement("span");
span.innerHTML = newTodo;
const button = document.createElement("button");
button.innerHTML = "🟩";
button.addEventListener("click", deleteToDo);
li.appendChild(button);
li.appendChild(span);
toDoList.appendChild(li);
}
function handleToDoSubmit(event) {
event.preventDefault();
const newTodo = toDoInput.value;
toDoInput.value = "";
paintToDo(newTodo);
}
toDoForm.addEventListener("submit", handleToDoSubmit);
paintToDo함수에 button 변수
와 addEventListener
함수가 추가되었다. deleteToDo
함수를 다음과 같이 정의 하고 여러개의 할일 목록을 생성하여 버튼을 눌러본다.
function deleteToDo() {
console.log("click buttion");
}
내용이 같은 할일 목록을 만들었다.