일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- JS
- order by
- 함수
- MySQL
- 명령어
- 배열
- JSP
- Update
- like
- 인라인뷰
- Ajax
- 백틱
- option태그
- post방식
- 변수
- 동적
- 자바스크립트
- select
- 코테
- oracle
- 테이블
- Spring
- 프로그래머스
- DATE_FORMAT
- 동적테이블
- 컨트롤러
- JavaScript
- 리눅스
- 도커
- SQL
- Today
- Total
bom's happy life
[JS] 삭제하기 이벤트 오류잡기!!!! 본문
이상하게 작동하던 코드 1 - (이건 첫번째 행 버튼 두번 누르면 alert 뜨면서 그제서야 밑에 행들 삭제 가능)
때에 따라 맞게 작동하기도 할것임
//삭제 이벤트 1
function del_Btn() {
let delEvent = document.querySelectorAll(".del_Btn");
for (let i = 0; i < delEvent.length; i++) {
delEvent[i].addEventListener("click", function () {
let parent = document.querySelector(".parentTbody");
if (i > 0) {
parent.removeChild(this.parentElement.parentElement);
} else {
alert("마지막 행은 삭제할 수 없습니다.");
}
});
}
}
이상하게 작동하던 코드 2 - (이건 첫번째 행만 삭제되고 밑으로 추가되는 행은 작동 x)
때에 따라 맞게 작동하기도 할것임
//삭제 이벤트 1
document.querySelector(".del_Btn").addEventListener("click", function() {
var delBtn = document.querySelector(".del_Btn").closest("tr");
delBtn.remove();
});
에러가 났던 이유는 내가 동적으로 행이 생성되게 해놨는데 새로 추가되는 행에 붙어 있는 삭제버튼이 각 작동하게 하려고 하다보니 위의 코드들이 내가 원하는 대로 작동되지 않았던 것 같다. (분명 저렇게 하면 되는 코드들도 있다.)
드디어 정상 작동하는 코드!!! (자바스크립트 코드임)
//삭제 이벤트 1
document.addEventListener("click", function(event) {
if (event.target.classList.contains("del_Btn")) {
var delBtn = event.target.closest("tr");
delBtn.remove();
}
});
설명1 → 위 코드는 document 객체에 클릭 이벤트를 추가하고, 클릭된 요소의 클래스를 확인하여 "del_Btn" 클래스를 가진 요소를 찾아 해당 요소가 속한 행을 삭제한다. 이렇게 수정하면 동적으로 추가된 모든 삭제 버튼이 작동하게 됩니다.
설명2 → addEventListener 메서드를 사용하여 클릭 이벤트 리스너를 문서 객체에 연결한다. 클릭 이벤트가 발생하면 클릭된 요소가 del_Btn 클래스를 가지고 있는지 확인한다. (classList.contains()) 해당 클래스를 가지고 있다면 closest("tr")을 사용하여 가장 가까운 "tr" 요소(상위 행)를 찾고, remove() 메서드를 사용하여 해당 요소를 DOM에서 제거한다!
이참에 addEventListener공부 다시....배운거 다 까먹었다ㅠ
'오류해결 및 정리✌️' 카테고리의 다른 글
[Spring] Debug 모드 에러 - 톰캣 타임아웃에러, 무한루프원인 (0) | 2023.06.12 |
---|---|
[DB] MySQLIntegrityConstraintViolationException 예외 (0) | 2023.06.09 |
[JS] JSP에서 스크립트 작동이 안될 때? - 스크립트 실행시점 문제 (0) | 2023.06.02 |
window.onload() = function()/ window.addEventListner('load', function(){}); (0) | 2023.05.12 |
XSS(Cross Site Scripting) 크로스사이트스크립팅 방지처리 (0) | 2023.05.09 |