⊗jsPmOEBTE 424 of 505 menu

Sihtelemendi saamine sündmuste levimisel

Olgu meil kaks elementi: div ja lõik p, mis asub selle divi sees:

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

Saame viite oma divile muutujasse:

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

Lisame oma siltidele mõned stiilid:

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

Olgu nüüd divile pandud kliki käitleja:

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

Sellepärast, et meie divil on padding, siis kui me klõpsame divil, võime tabada lõiku, või võime tabada kohta, kus seda lõiku pole, see tähendab otse divile.

Samal ajal kliki käitlejas this näitab alati sellele elemendile, millele käitleja on pandud. Meie puhul see on meie div:

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

Siiski, me saame saada just selle sildi, kus sündmus toimus. Selleks saame vaadata, mis asub event.target sees:

div.addEventListener('click', function(event) { console.log(event.target); // kas div või lõik });

Neid kaht varianti saab eristada kasutades tingimusi:

let div = document.querySelector('div'); div.addEventListener('click', function(event) { if (event.target.tagName === 'DIV') { console.log('klõps just divile'); } if (event.target.tagName === 'P') { console.log('klõps just lõigule'); } });

tagName asemel saab kasutada matches:

let div = document.querySelector('div'); div.addEventListener('click', function(event) { if (event.target.matches('div')) { console.log('klõps just divile'); } if (event.target.matches('p')) { console.log('klõps just lõigule'); } });

Antud on järgmised elemendid:

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

Pange divile kliki käitleja. Selles käitlejas määrake kindlaks, millises sildis sündmus töötas.

Modifitseerige eelmist ülesannet. Tehke nii, et li klõpsamisel lisataks selle lõppu hüüumärk, ja ul klõpsamisel prinditaks konsooli informatsioon sellest.

Eesti
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Me kasutame saidi toimimiseks, analüüsi ja personaliseerimiseks küpsiseid. Andmete töötlemine toimub vastavalt Privaatsuspoliitikale.
nõustu kõigega häälesta keeldu