⊗jsPmOEEE 419 of 505 menu

자바스크립트의 Event 객체 내 이벤트 요소

Event 객체는 이벤트가 발생한 요소를 가져올 수도 있게 해줍니다. 이 요소는 target 속성에 담겨 있습니다. 이 요소가 this 안에 이미 있는데 왜 필요할까요?

사실 this는 항상 이벤트가 바인딩된 요소를 담고 있지만, target 속성은 실제로 클릭이 발생한 요소를 담고 있습니다. 이 실제 요소는 this와 일치할 수도 있고, 그렇지 않을 수도 있습니다.

예시를 살펴봅시다. div가 있고 그 안에 단락이 있다고 가정합시다:

<div id="elem"> <p>text</p> </div>

div에 이벤트를 바인딩하지만, 단락을 클릭해 봅시다. 단락을 클릭하는 것은 단락이 우리의 div 안에 포함되어 있기 때문에 동시에 div를 클릭하는 것임이 명백합니다.

설명한 경우, target 속성은 이벤트가 발생한 최종 태그, 즉 div가 아닌 단락을 담게 될 것입니다. 이를 확인해 봅시다:

let elem = document.querySelector('#elem'); elem.addEventListener('click', function(event) { console.log(event.target); // 우리의 단락을 출력합니다 console.log(this); // 우리의 div를 출력합니다 });

li 태그들을 가진 ul 목록이 있다고 가정합시다:

ul { padding: 30px; border: 1px solid red; } li { list-style-type: none; margin-bottom: 20px; border: 1px dashed black; } <ul id="elem"> <li>text</li> <li>text</li> <li>text</li> <li>text</li> <li>text</li> </ul>

:

ul 태그에 클릭 핸들러를 바인딩하세요. 이 핸들러 안에서 tagName 속성을 사용해 클릭이 발생한 태그를 확인하세요. 클릭이 li 태그에서 발생한 경우 - 이 태그의 텍스트 끝에 느낌표를 추가하세요. 그리고 클릭이 ul 태그에서 발생한 경우 - 이에 대한 정보를 콘솔에 출력하세요.

한국어
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақКыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
우리는 웹사이트 운영, 분석 및 개인화를 위해 쿠키를 사용합니다. 데이터 처리는 개인정보 처리방침에 따라 이루어집니다.
모두 수락 설정 거부