⊗jsPmOEBTE 424 of 505 menu

Získání cílového elementu při propagaci událostí

Předpokládejme, že máme dva elementy: div a odstavec p, který se nachází uvnitř tohoto divu:

<div> <p></p> </div>

Získáme odkaz na náš div do proměnné:

let div = document.querySelector('div');

Přidejme našim tagům nějaké styly:

div { padding: 20px; border: 1px solid red; } p { width: 200px; height: 200px; border: 1px solid green; }

Nyní přidejme na div obslužnou rutinu kliknutí:

div.addEventListener('click', function() { console.log('click'); });

Protože náš div má padding, když klikneme na div, můžeme kliknout na odstavec, nebo můžeme kliknout na místo, kde tento odstavec není, tedy přímo na div.

Při tom this v obslužné rutině kliknutí bude vždy ukazovat na element, na který je obslužná rutina připojena. V našem případě je to náš div:

div.addEventListener('click', function() { console.log(this); // div });

Nicméně, můžeme získat právě ten tag, ve kterém událost nastala. K tomu můžeme zjistit, co je v event.target:

div.addEventListener('click', function(event) { console.log(event.target); // buď div, nebo odstavec });

Tyto dvě varianty lze rozlišit pomocí podmínek:

let div = document.querySelector('div'); div.addEventListener('click', function(event) { if (event.target.tagName === 'DIV') { console.log('kliknutí přímo na div'); } if (event.target.tagName === 'P') { console.log('kliknutí přímo na odstavec'); } });

Místo tagName lze použít matches:

let div = document.querySelector('div'); div.addEventListener('click', function(event) { if (event.target.matches('div')) { console.log('kliknutí přímo na div'); } if (event.target.matches('p')) { console.log('kliknutí přímo na odstavec'); } });

Jsou dány následující elementy:

<div> <ul> <li>1</li> <li>2</li> <li>3</li> </ul> </div> div, ul, li { padding: 20px; } div { border: 1px solid red; } ul { border: 1px solid orange; } li { border: 1px solid green; }

Připojte na div obslužnou rutinu kliknutí. V této obslužné rutině určete, ve kterém z tagů událost nastala.

Upravte předchozí úlohu. Udělejte to tak, aby při kliknutí na li se na její konec přidal vykřičník, a při kliknutí na ul se do konzole vypisovala informace o tom.

Čeština
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяDanskDeutschΕλληνικά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
Používáme soubory cookie pro fungování webu, analýzu a personalizaci. Zpracování údajů probíhá v souladu s Zásadami ochrany osobních údajů.
přijmout vše přizpůsobit odmítnout