⊗jsPmOEBTE 424 of 505 menu

Mērķa elementa iegūšana notikumu izplatīšanās laikā

Pieņemsim, ka mums ir divi elementi: div un rindkopa p, kas atrodas šī div iekšpusē:

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

Iegūsim saiti uz mūsu div mainīgajā:

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

Pievienosim mūsu elementiem dažus stilus:

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

Pieņemsim, ka uz div ir pievienots klikšķa notikuma apstrādātājs:

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

Tā kā mūsu div ir padding, tad, kad mēs noklikšķinām uz div, mēs varam trāpīt uz rindkopas, vai arī varam trāpīt vietā, kur šīs rindkopas nav, tas ir, tieši uz div.

Šajā gadījumā klikšķa apstrādātājā this vienmēr norādīs uz to elementu, uz kuru ir pievienots apstrādātājs. Mūsu gadījumā tas ir mūsu div:

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

Tomēr mēs varam iegūt tieši to elementu, kurā notika notikums. Lai to izdarītu, mēs varam paskatīties, kas atrodas event.target:

div.addEventListener('click', function(event) { console.log(event.target); // vai nu div, vai rindkopa });

Šos divus variantus var atšķirt, izmantojot nosacījumus:

let div = document.querySelector('div'); div.addEventListener('click', function(event) { if (event.target.tagName === 'DIV') { console.log('klikšķis tieši uz div'); } if (event.target.tagName === 'P') { console.log('klikšķis tieši uz rindkopas'); } });

tagName vietā var izmantot matches:

let div = document.querySelector('div'); div.addEventListener('click', function(event) { if (event.target.matches('div')) { console.log('klikšķis tieši uz div'); } if (event.target.matches('p')) { console.log('klikšķis tieši uz rindkopas'); } });

Doti šādi elementi:

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

Pievienojiet div klikšķa notikuma apstrādātāju. Šajā apstrādātājā nosakiet, kurā no elementiem tika izsaukts notikums.

Modificējiet iepriekšējo uzdevumu. Padariet tā, lai, noklikšķinot uz li, tās beigās tiktu pievienots izsaukuma zīme, bet, noklikšķinot uz ul, konsolē tiktu izvadīta informācija par to.

Latviešu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mēs izmantojam sīkdatnes, lai nodrošinātu vietnes darbību, analīti un personalizāciju. Datu apstrāde notiek saskaņā ar Konfidencialitātes politiku.
pieņemt visus iestatīt noraidīt