⊗jsPmOEBTE 424 of 505 menu

Tikslinio elemento gavimas įvykių plitimo metu

Tarkime, kad turime du elementus: div ir pastraipą p, esančią šio div viduje:

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

Gaukime nuorodą į mūsų div kintamajame:

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

Pridėkime kai kuriuos stilius mūsų žymoms:

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

Tarkime, kad dabar div turi pridėtą paspaudimo apdorojimo funkciją:

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

Dėl to, kad mūsų div turi padding, kai mes spaudžiame ant div, galime pataikyti į pastraipą, arba galime pataikyti į vietą, kur šios pastraipos nėra, tai yra tiesiogiai į div.

Šiuo atveju paspaudimo apdorojimo funkcijoje this visada rodys į tą elementą, ant kurio pridėta apdorojimo funkcija. Mūsų atveju tai mūsų div:

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

Tačiau, mes galime gauti būtent tą žymą, kurioje įvyko įvykis. Tam mes galime patikrinti, kas yra event.target:

div.addEventListener('click', function(event) { console.log(event.target); // arba div, arba pastraipa });

Galima atskirti šiuos du variantus naudojant sąlygas:

let div = document.querySelector('div'); div.addEventListener('click', function(event) { if (event.target.tagName === 'DIV') { console.log('paspaudimas būtent ant div'); } if (event.target.tagName === 'P') { console.log('paspaudimas būtent ant pastraipos'); } });

Vietoj tagName galima naudoti matches:

let div = document.querySelector('div'); div.addEventListener('click', function(event) { if (event.target.matches('div')) { console.log('paspaudimas būtent ant div'); } if (event.target.matches('p')) { console.log('paspaudimas būtent ant pastraipos'); } });

Duoti šie elementai:

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

Pridėkite prie div paspaudimo apdorojimo funkciją. Šioje apdorojimo funkcijoje nustatykite, kurioje iš žymų įvyko įvykis.

Modifikuokite ankstesnę užduotį. Padarykite taip, kad paspaudus ant li, į jos galą būtų pridėtas šauktukas, o paspaudus ant ul konsolėje būtų išvesta informacija apie tai.

Lietuvių
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mes naudojame slapukus svetainės veikimui, analizei ir personalizavimui. Duomenų apdorojimas vyksta pagal Privatumo politiką.
priimti visus nustatyti atšaukti