⊗jsPmOEBTE 424 of 505 menu

Hentning af målelement ved event bubbling

Lad os sige, at vi har to elementer: div og et afsnit p, som ligger inde i denne div:

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

Lad os hente en reference til vores div i en variabel:

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

Lad os tilføje nogle stilarter til vores tags:

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

Lad os nu sige, at der er en klik-håndterer sat på div'en:

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

På grund af at vores div har padding, kan vi, når vi klikker på div'en, enten ramme afsnittet, eller vi kan ramme et sted, hvor afsnittet ikke er, det vil sige direkte på div'en.

I denne tilfælde vil this i klik-håndtereren altid pege på det element, som håndtereren er sat på. I vores tilfælde er det vores div:

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

Dog kan vi få præcis det tag, hvor begivenheden indtraf. For at gøre dette kan vi se, hvad der ligger i event.target:

div.addEventListener('click', function(event) { console.log(event.target); // enten div'en eller afsnittet });

Man kan skelne mellem disse to tilfælde ved hjælp af betingelser:

let div = document.querySelector('div'); div.addEventListener('click', function(event) { if (event.target.tagName === 'DIV') { console.log('klik præcis på div\'en'); } if (event.target.tagName === 'P') { console.log('klik præcis på afsnittet'); } });

Man kan i stedet for tagName bruge matches:

let div = document.querySelector('div'); div.addEventListener('click', function(event) { if (event.target.matches('div')) { console.log('klik præcis på div\'en'); } if (event.target.matches('p')) { console.log('klik præcis på afsnittet'); } });

Følgende elementer er givet:

<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; }

Sæt en klik-håndterer på div'en. I denne håndterer skal du afgøre, i hvilket af tags'ene begivenheden indtraf.

Modificer den foregående opgave. Gør det sådan, at når der klikkes på li, tilføjes der et udråbstegn til slutningen af den, og når der klikkes på ul, udskrives information om dette i konsollen.

Dansk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDeutschΕλληνικά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
Vi bruger cookies til webstedets funktion, analyse og personalisering. Behandling af data foregår i henhold til Fortrolighedspolitikken.
accepter alle tilpas afvis