์ด๋ฒ ์๊ฐ์ ์๋ฐ์คํฌ๋ฆฝํธ์์ HTML ์์์ ์ด๋ฒคํธ๋ฅผ ๋ค๋ฃจ๋ ๋ฐฉ๋ฒ๊ณผ Todolist๋ฅผ ๋ง๋ค์ด๋ณด๋ฉฐ ํ์ตํ๋ ์๊ฐ์ ๊ฐ๋๋ก ํ๊ฒ ๋ค.
ํ์ต ์์
- ์ด๋ฒคํธ ๊ฐ์ฒด๋?
- ์ด๋ฒคํธ ๋ฑ๋ก, ์ญ์ ํ๊ธฐ
addEventListener()
removeEventListner()
- ์ง๊ธ๊น์ง ๋ฐฐ์ด ๋ด์ฉ์ผ๋ก Todo ๋ฆฌ์คํธ ๋ง๋ค์ด๋ณด๊ธฐ
์ด๋ฒคํธ ๋ฑ๋ก, ์ญ์ ํ๊ธฐ
์ฐ๋ฆฌ๋ ์ง๋ ์๊ฐ ๊น์ง HTML Element๋ฅผ ๋ฑ๋ก, ์์ , ์ญ์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํด ํ์ตํ์๋ค.
์ด๋ฒ ์๊ฐ์๋ ์ฐ๋ฆฌ๊ฐ ์ง๋๋ฒ์ ๋ง๋ Element์ ์ด๋ฒคํธ๋ค ๋ฑ๋ก์์ผ๋ณด๋ ์ผ์ ํ ๊ฒ์ด๋ค.
์ด๋ฒคํธ ๋ฑ๋กํ๊ธฐ
์ด๋ฒคํธ๋ฅผ ๋ฑ๋กํ๊ธฐ ์ํด์๋ addEventListener()
๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค.
target.addEventListener(type, listener, useCapture);
- target : ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ๋ฑ๋กํ DOM ๊ฐ์ฒด
- type : ์ด๋ฒคํธ ์ ํ์ ์ง์ ํ๋ ๋ฌธ์์ด (click ์ด๋ฒคํธ๋ฉด
"clicl"
, change ์ด๋ฒคํธ๋ฉด"chage"
) - listener : ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋ ์ฒ๋ฆฌ๋ฅผ ๋ด๋นํ๋ ์ฝ๋ฐฑ ํจ์
- useCapture : ์ด๋ฒคํธ ๋จ๊ณ
๊ธฐ๋ณธ์ ์ธ ์คํ๊ณผ ์ฌ์ฉ ๋ฐฉ๋ฒ์ ์ด๋ฌํ๋ค.
๋ฐฑ๋ฌธ์ด ๋ถ์ฌ์ผํ๋ผ ์ด์ ์ค์ ์์ ๋ฅผ ํตํด์ ์์๋ณด์.
<!DOCTYPE html>
<html lang="en">
<head>
<title>Hello world</title>
</head>
<body>
<span id="username">Hello ์ ์ด๋ฆ์ JANG ์
๋๋ค.</span>
<button id="btn">go</button>
</body>
</html>
์์ ๊ฐ์ด 2 ๊ฐ์ ํ๊ทธ๋ก ๊ตฌ์ฑ๋ HTML ํ์ผ์ด ์๋ค๊ณ ๊ฐ์ ํด๋ณด์.
์ฐ๋ฆฌ๊ฐ ํ๊ณ ์ถ์ ๊ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.
go ๋ผ๋ ๋ฒํผ์ ํด๋ฆญํ๋ฉด span ํ๊ทธ์ ์๋ ๋ด์ฉ์ ์ฝ์๋ก ์ถ๋ ฅํ๋ ๊ฒ์ด๋ค.
const mySpan = document.getElementById("username");
const myBtn = document.getElementById("btn");
myBtn.addEventListener("click", () => {
console.log(mySpan.value);
});
๊ทธ๋ผ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๊ธฐ๋ฅ์ด ์ ๊ตฌํ๋๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
์ด๋ฒคํธ ์ญ์ ํ๊ธฐ
์ด๋ฒคํธ๋ฅผ ์ญ์ ํ๋ ๋ฐฉ๋ฒ์๋ removeEventListener
๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์๋ค.
target.removeEventListener(type, listener, useCapture);
์ธ์๋ addEventListener
๊ณผ ๋์ผํ๋ค.
removeEventListener๋ฅผ ์ฌ์ฉํ ๋ ์ต๋ช
ํจ์๋ ํ์ดํ ํจ์๋ก ๋ฑ๋ก๋ ์ด๋ฒคํธ๋ ์ญ์ ํ ์ ์์ง๋ง ์ด๋ฒคํธ ๋ฆฌ์ค๋ ๋ด๋ถ์์ removeEventListener
๋ฅผ ํธ์ถํ๋ฉด ์ญ์ ํ ์ ์๋ค.
์ด ๋์๋ listener์ arguments.callee
๋ฅผ ๋๊ธด๋ค.
์ด๋ฒคํธ ์ญ์ ํ๊ธฐ๋ ์์ฃผ ์ฌ์ฉํ๋ ๊ธฐ๋ฅ์ด ์๋๊ธฐ ๋๋ฌธ์ ์ด๋ฒ ๊ธ์ ๋ชฉ์ ์ ๋ง๊ฒ ์ฌ๊ธฐ๊น์ง๋ง ์ค๋ช ํ๋๋ก ํ๊ฒ ๋ค.
์ง๊ธ๊น์ง ๋ฐฐ์ด ๋ด์ฉ์ผ๋ก Todo ๋ฆฌ์คํธ ๋ง๋ค์ด๋ณด๊ธฐ
์ง๊ธ๊น์ง ๋ฐฐ์ด ๋ด์ฉ์ผ๋ก Todo List๋ฅผ ๋ง๋ค์ด๋ณด์.
์ฐ๋ฆฌ์ todo ๋ฆฌ์คํธ์๋ ์ด๋ค ๋ด์ฉ๋ค์ด ๋ค์ด๊ฐ์ผ ํ ์ง ๋จผ์ ์๊ฐํด๋ณด์.
๊ตฌํ ๋ชฉ๋ก
- ์ ๋ชฉ
- ํฌ๋ ์์ดํ ์ ๋ ฅ ํผ
- ํฌ๋ ์์ดํ ๋ฑ๋ก ๋ฒํผ
- ํฌ๋ ๋ฆฌ์คํธ ๋ ๋๋ง
๊ธฐ๋ฅ ๋ชฉ๋ก
- Todo Item ๋ฑ๋ก
ํ๋ก์ ํธ ์ธํ
์ฐ์ ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ๋ฅผ ํ๋ ์์ฑํ๊ณ ๊ทธ ์๋์
index.html
index.js ํ์ผ์ ์์ฑํ๋ค.
<!DOCTYPE html>
<html lang="en">
<head>
<title>Hello world</title>
</head>
<body>
<script src="./index.js"></script>
</body>
</html>
์ฌ๊ธฐ์ script ํ๊ทธ์ ์์น๊ฐ ์กฐ๊ธ ์ค์ํ๋ฐ, body ํ๊ทธ๊ฐ ๋๋๊ธฐ ๋ฐ๋ก ์ ์ ์์นํด์ผ ํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋ค์๊ณผ ๊ฐ์ด HTML ํ๊ทธ๋ฅผ ์ด์ฉํด์ ํฌ๋ ๋ฆฌ์คํธ ํผ์ ๋ง๋ค์ด๋ณด์.
<!DOCTYPE html>
<html lang="en">
<head>
<title>Hello world</title>
</head>
<body>
<div>Todo List</div>
<div>
<input
id="todo-form"
type="text"/>
<button id="todo-button">๋ฑ๋ก</button>
</div>
<div id="todo-list"></div>
<script src="./index.js"></script>
</body>
</html>
๊ทธ๋ฆฌ๊ณ js ํ์ผ์์ ๊ฐ๊ฐ Dom ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์ค์
const input = document.getElementById("todo-form");
const button = document.getElementById("todo-button");
const todoList = document.getElementById("todo-list");
Todo Item์ด๋ผ๋ HTML Element๋ฅผ <div id="todo-list" />
ํ๊ทธ ์๋์ ์ถ๊ฐํ๋ ์ด๋ฒคํธ๋ฅผ ์์ฑํด์ผ ํ๋ค.
html ์๋ฆฌ๋จผํธ๋ฅผ ์ถ๊ฐํ๊ธฐ ์ํด์ appendChild
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์๋ค.
button.addEventListener("click", (e) => {
let todoItem = document.createElement("li");
todoList.appendChild(todoItem);
})
์ด์ input์ ์๋ value๋ฅผ li ํ๊ทธ์ text value๋ก ๋ฃ์ด๋ณด์.
button.addEventListener("click", (e) => {
let todoItem = document.createElement("li");
todoItem.innerText = input.value;
input.value = "";
todoList.appendChild(todoItem);
})
๋๊ธ