javascript
JavaScript 이벤트 처리기 함수 - e.currentTarget
유니유뉘
2023. 3. 20. 13:25
728x90
JavaScripte e.currentTarget에 대해서
e.currentTarget은 무엇일까?
e.currentTarget은 Javascript의 이벤트 처리기 함수이
며 현재 이벤트가 발생한 요소를 가리킨다.
근데 e.target과 차이점이 있다.
e.target를 사용하면 클릭한 그 요소만을 가져오고 e.currentTarget를 사용하면 클릭한 그 요소의 부모 태그까지 가져온다.
예시)
<div class="parent">
<span class="click">click</span>
</div>
document.querySelector(".parent").addEventListener('click',function(e){
console.log(e.target);
console.log(e.currentTarget);
})
//<span class="click">click</span>
//<div class="parent">
// <span class="click">click</span>
//</div>
이렇게 e.target는 해당 요소만(click클래스) 가져오지만 e.currentTarget은 그 요소의 부모요소(parent클래스)까지 가져온다.
e.currentTarget 값은 이벤트가 처리되는 동안만 사용할 수 있다.
counter 기능 코딩 연습하는데 참고한 곳에서 코드 작성할 때 e.currentTarget를 사용했는데 신박했다고 느꼈다.(개인적으로)
마이너스 버튼, 초기화 버튼, 플러스 버튼 총 3개의 버튼이 있는데 버튼클래스를 눌렀을 때 *클래스가 포함되어 있다면 이런 동작을 해줘! 였다.
<h1 class="value">0</h1>
<button class="btn mi">-</button>
<button class="btn reset">reset</button>
<button class="btn plus">+</button>
let btns = document.querySelectorAll(".btn");
let num = document.querySelector(".value");
let count = 0;
btns.addEventListener('click',function(e){
let 이벤트값 = e.currentTarget.classList;
if(이벤트값.contains('mi')){
count--;
}else if(이벤트값.contains('plus')){
count++;
}else{
count = 0;
}
value.textContent = count;
});
이렇게 button 태그를 btn 클래스로 묶어서 클릭했을 때 부모요소까지 가져와 내가 원하는 class명이 포함되어있다면 원하는 동작을 할 수 있도록 실행할 수 있었다. 이로써 코드는 깔끔해지고 간단해질 수 있었다.
카운터 만드는 기능은 이곳에서 배웠다. 다른 기능들도 알고 싶으면 이 사이트에 가서 만들어보는 걸 추천한다!
반응형