const items = document.querySelector(".items");
const input = document.querySelector(".footer__input");
const addBtn = document.querySelector(".footer__button");
function onAdd() {
// 1. 사용자가 입력한 텍스트를 받아옴
const text = input.value;
if (text === "") {
input.focus();
return;
}
// 2. 새로운 아이템을 만듬 (텍스트 + 삭제 버튼)
const item = createItem(text);
// 3. items 컨테이너 안에 새로 만든 아이템을 추가한다.
items.appendChild(item);
// 4. 새로 추가된 아이템으로 스크롤링
item.scrollIntoView({ block: "center" });
// 5. 인풋을 초기화 한다.
input.value = "";
input.focus();
}
function createItem(text) {
const itemRow = document.createElement("li");
itemRow.setAttribute("class", "item__row");
const item = document.createElement("div");
item.setAttribute("class", "item");
const name = document.createElement("span");
name.setAttribute("class", "item__name");
name.innerText = text;
const deleteBtn = document.createElement("button");
deleteBtn.setAttribute("class", "item__delete");
deleteBtn.innerHTML = `<i class="far fa-trash-alt"></i>`;
deleteBtn.addEventListener("click", () => {
items.removeChild(itemRow);
});
const itemDivider = document.createElement("div");
itemDivider.setAttribute("class", "item__divider");
item.appendChild(name);
item.appendChild(deleteBtn);
itemRow.appendChild(item);
itemRow.appendChild(itemDivider);
return itemRow;
}
addBtn.addEventListener("click", () => {
onAdd();
});
input.addEventListener("keypress", (event) => {
if (event.key === "Enter") {
onAdd();
}
});
=> 템플릿 문자열, 이벤트 위임을 사용한 방법
const items = document.querySelector(".items");
const input = document.querySelector(".footer__input");
const addBtn = document.querySelector(".footer__button");
function onAdd() {
// 1. 사용자가 입력한 텍스트를 받아옴
const text = input.value;
if (text === "") {
input.focus();
return;
}
// 2. 새로운 아이템을 만듬 (텍스트 + 삭제 버튼)
const item = createItem(text);
// 3. items 컨테이너 안에 새로 만든 아이템을 추가한다.
items.appendChild(item);
// 4. 새로 추가된 아이템으로 스크롤링
item.scrollIntoView({ block: "center" });
// 5. 인풋을 초기화 한다.
input.value = "";
input.focus();
}
let id = 0;
function createItem(text) {
const itemRow = document.createElement("li");
itemRow.setAttribute("class", "item__row");
itemRow.setAttribute("data-id", id);
itemRow.innerHTML = `
<div class="item" data-id=${id}>
<span class="item__name">${text}</span
<button class="item__delete">
<i class="far fa-trash-alt" data-id=${id}></i>
</button>
</div>
<div class="item__divider"></div>
`;
id++;
return itemRow;
}
addBtn.addEventListener("click", () => {
onAdd();
});
input.addEventListener("keypress", (event) => {
if (event.key === "Enter") {
onAdd();
}
});
items.addEventListener("click", (event) => {
const id = event.target.dataset.id;
if (id) {
// id 가 있으면
const toBeDeleted = document.querySelector(`.item__row[data-id="${id}"]`);
toBeDeleted.remove();
}
});
'FRONT > JAVASCRIPT' 카테고리의 다른 글
[JS] 바닐라 자바스크립트 Meal finder (API 사용하기) (0) | 2021.07.25 |
---|---|
[JS] 바닐라 자바스크립트로 행맨 게임 만들기 (0) | 2021.07.25 |
[JS] 클릭하면 특정 위치로 화면 스크롤 하기: scrollIntoView (0) | 2021.07.24 |
[JS] MouseEvent.clientX, MouseEvent.clientY 로 좌표 실습하기 (0) | 2021.07.24 |
[JS] 바닐라 자바스크립트로 미니 가계부앱 만들기 (3) | 2021.07.13 |