[JavaScript] JS로 크롬 만들기 10. JS로 HTML element 삭제 : event.target & parentElement
작성:    
업데이트:
카테고리: JS CloneCoding
태그: FE Language, JS, JS CloneCoding
JS element 삭제
delete 버튼 생성
function paintToDo(newTodo) {
const button = document.createElement("button"); // document에 button 만들기
button.innerText = "❌"; // button에 'X' 표시 text 넣기
button.addEventListener("click", deleteToDo); // button클릭 시 deleteToDo 함수 실행
li.appendChild(button); // li에 button 넣기
toDoList.appendChild(li); // toDoList ul에 li 넣기
}
- 삭제 버튼에 대한 코드만 남겼다.
- 이전에 newTodo를 span으로 남긴 이유는 delete 버튼과 한 라인에 둘 예정이었기 때문
- button도 li에 append해주고, li를 toDoList ul에 append한다.
event.target과 parentElement
문제 상황 : 어떤 삭제 버튼을 누를 때, 어떤 li의 삭제 버튼인지 알 수가 없다!
해결 : click event에 대한 자세한 정보를 ‘event’에서 얻자!
-
addEventListener(“click”, function) 에서 click에 대한 event 정보를 알 수 있다.
-
우리가 클릭한 button의 parentElement인 li를 알 수 있다.
function deleteToDo(event) {
console.log(event.target.parentElement);
}
- event.target : 클릭된 HTML element
-
parentElement : event.target의 부모 element
- 위의 코드를 함수에 넣고 HTML 화면에서 삭제 버튼을 누르면, console에 삭제를 누른 버튼의 li element를 확인할 수 있다.
remove()
저장된 element 변수를 HTML에서 실제로 제거할 때 사용
function deleteToDo(event) {
const li = event.target.parentElement; // 삭제해야 하는 li를 parentElement를 이용해 조회/저장
li.remove(); // parentElement 제거
}
- button의 부모 element를 알았으니, 이를 제거하면 되겠다.
- 변수에 지정하고 이를 remove() method로 제거하면 된다.
관련 JS 코드
// js/todo.js
function deleteToDo(event) {
const li = event.target.parentElement; // 삭제해야 하는 li를 parentElement를 이용해 조회/저장
li.remove(); // parentElement 제거
}
function paintToDo(newTodo) {
const li = document.createElement("li"); // document에 li 만들기
const span = document.createElement("span"); // document에 span 만들기
const button = document.createElement("button"); // document에 button 만들기
span.innerText = newTodo; // span에 newTodo text 넣기
button.innerText = "❌"; // button에 'X' 표시 text 넣기
button.addEventListener("click", deleteToDo); // button클릭 시 deleteToDo 함수 실행
li.appendChild(span); // li에 span을 넣기
li.appendChild(button); // li에 button 넣기
toDoList.appendChild(li); // toDoList ul에 li 넣기
}
댓글남기기