티스토리 뷰
목차
1. target, currentTarget
2. target과 currentTarget의 차이
3. 퀴즈
자바스크립트에서 이벤트를 다룰 때 클릭한 요소를 가져오는 방법으로 event 객체의 target 또는 currentTarget 프로퍼티를 사용합니다.
1. target, currentTarget 요약
- target: 이벤트가 발생한 바로 그 요소를 직접 가리킴
- currentTarget: 이벤트 리스너를 가진 요소를 가리킴
예제
다음과 같은 코드가 있습니다.
<style>
.upper{
background:black;
width:100px;
text-align:center;
}
.lower{
background:pink;
width:100px
}
</style>
<script>
function clicked(event){
alert(event.Target.id+" clicked");
}
</script>
<div class="upper" onClick="clicked(event)" id="div">
<span class="lower" id="span">
span
</span>
</div>
실행결과
위 결과에서 검은색은 div, 핑크색은 span입니다.
코드를 보면 onClick 이벤트는 div에 설정을 했지만 검은색, 핑크색 클릭 시 둘 다 이벤트가 발생합니다.
div에만 이벤트를 설정했는데 자식요소인 span에도 이벤트가 발생하는 이유가 무엇일까요?
그 이유는 이벤트 버블링과 이벤트 캡쳐와 관련이 있으며 아래 링크에 잘 설명되어 있으니 참고바랍니다.
https://choonse.com/2022/01/14/651/
2. target과 currentTarget의 차이
두 가지 경우로 나누어 생각해봅시다.
1. 핑크색 부분을 클릭했을 때
target - 핑크 (핑크를 눌렀으므로 핑크가 이벤트 발생 시점이 됨)
currentTarget - 검은색 (onClick 이벤트는 검은색이 갖고 있음)
2. 검은색 부분을 클릭했을 때
target - 검정 (검정을 눌렀으므로 검정이 이벤트 발생 시점이 됨)
currentTarget - 검은색 (onClick 이벤트는 검은색이 갖고 있음)
따라서 핑크색을 누르면 span clicked, 검은색을 누르면 div clicked 알림창이 띄워집니다.
만약 핑크색을 눌러도 이벤트를 가진 검은색 속성에 접근하고 싶다면 currentTarget과 getAttribute를 사용하면 됩니다.
<style>
.upper{
background:black;
width:100px;
text-align:center;
}
.lower{
background:pink;
width:100px
}
</style>
<script>
function clicked(event){
alert(event.currentTarget.getAttribute('id')+" clicked");
}
</script>
<div class="upper" onClick="clicked(event)" id="div">
<span class="lower" id="span">
span
</span>
</div>
위의 코드는 핑크색, 검은색 둘 다 이벤트를 가진 검은색 속성에만 접근합니다.
따라서 target은 누른 바로 그 것, currentTarget은 이벤트를 실행하는 바로 그 것으로 이해하면 될 것 같습니다.
3. 퀴즈
- target: 이벤트가 발생한 바로 그 요소를 직접 가리킴
- currentTarget: ( )를 가진 요소를 가리킴
Q. 괄호 안에 들어갈 단어는?
'Language > JavaScript' 카테고리의 다른 글
[Javascript] "use strict" / Strict Mode 란? (0) | 2022.06.23 |
---|---|
[JavaScript] classList (add, remove, contains, toggle) (0) | 2022.06.22 |
[Javascript] prompt(), confirm(), alert() 사용 방법 (0) | 2022.06.22 |
[JavaScript] return과 break의 차이 (0) | 2022.06.15 |
[JavaScript] e.stopPropagation(), e.preventDefault() (0) | 2022.06.12 |
- Total
- Today
- Yesterday
- 코드잇스프린트
- html
- currentTarget
- 유사배열객체
- hydrationboundary
- 스프린트프론트엔드6기
- rest parameter
- CSS
- 동기
- map
- 리액트
- Next.js
- 제어 컴포넌트
- innerhtml
- js
- Git
- arguments
- 비제어 컴포넌트
- react
- 취업까지달린다
- tanstackquery
- GitHub
- Target
- 코드잇 스프린트
- 배열
- javascript
- 중급 프로젝트
- 객체
- 비동기
- 프론트엔드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |