DOM 삭제하기

Feb 21, 2024
DOM 삭제하기

바닐라 코드 1 → XXX

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .box { border: 1px solid black; padding: 10px; } </style> </head> <body> <h1>삭제하기</h1> <button onclick="del()">remove로 삭제하기</button> <div class="box" id="outerBox"> <div class="box" id="innerBox1"> 내부박스1 </div> </div> <script> function del(){ let el = document.querySelector("#innerBox1"); el.remove(); } </script> </body> </html>
 

id값 중복되지 않게 하자!

notion image
이제 클릭할 때마다 id가 n++로 카운트 되면서 올라갈 것
notion image
 

[ id값 중복되지 않게 하는 코드 실습 ]

방법 1로 삭제 해보자 (하지마라!!!!!!!!!)

<script> let n = 0; // 최초의 시작은 0으로 해서 function addAppend() { n++; // ++코드를 여기에 쓰던지 let newString = `<div class="box" id="innerBox${n}">내부박스${n}</div>`; $("#outerBox").append(newString); // 이벤트 $(`#innerBox${n}`).click(() => { alert(`클릭됨${n}`); }); } 이벤트는 추가될 때 걸려야 함
$(#innerBox${n}).click(() => { ... })는 이벤트 핸들러 (=이벤트다) 이 코드는 #innerBox${n}라는 아이디를 가진 요소가 클릭되었을 때 실행될 동작을 정의
 

[ 화면 확인 ]

notion image
클릭하면 alert 뜸
💡
CSR 에서는 이벤트를 뿌릴 때 바로 걸어야 한다. (이벤트를 미리 걸어놓을 수 없다) -> 추가될 때 이벤트가 걸려야 한다!
 

방법 2) onClick 을 사용!

전체 코드

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script> <title>Title</title> <style> .box { margin-top: 10px; border: 1px solid black; padding: 10px; } </style> </head> <body> <h1>추가, 삭제</h1> <button onclick="addAppend()">append로 추가하기</button> <div class="box" id="outerBox"> </div> <script> let n = 0; function addAppend() { n++; let newString = `<div onclick="del(${n})" class="box" id="innerBox${n}">내부박스${n}</div>`; $("#outerBox").append(newString); } function del(n) { alert(`번호 : ${n}`); } </script> </body> </html>
 

 
notion image
function del(n)은 변수가 아닌 문자열이라서 fix되어 고정된 숫자를 받을 것이다 제일 처음 1이 만들어져서 화면에 뿌려져 있을 것. 그다음에 돌면 del1, del2, del3 이런식으로 n++ 되겠지 그렇게 문자열로 fix 되는 것임

[ 화면 확인 ]

notion image
아이디 거는 것보다 onclick이 훨씬 좋다. 이제 삭제할 id 구분이 가능해졌죠?
 
 

id 나왔으니 이제 진짜 삭제하자 (꼭 기억해야할 코드) ★

notion image
<script> let n = 0; function addAppend() { n++; let newString = `<div onclick="del(${n})" class="box" id="innerBox${n}">내부박스${n}</div>`; $("#outerBox").append(newString); } function del(n) { $(`#innerBox${n}`).remove(); } </script>
 

[ 화면 확인 ]

notion image
클릭하니까 내부박스 3, 4가 삭제됨 이렇게 클라이언트 사이드 랜더링으로 삭제해봤습니다
 
💡
CSR을 만들 때 제일 중요한 건 id 값!! → 나중에 실제로 만들 때는 db에서 pk키를 선택
 
Share article

codingb