⊗jsPmOEBTE 424 of 505 menu

Իվենթի բուբլինգի ժամանակ թիրախային տարրի ստացում

Ենթադրենք ունենք երկու տարր՝ div և նրա ներսում գտնվող p պարագրաֆը՝

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

Ստացենք մեր div-ի հղումը փոփոխականի մեջ՝

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

Տանք մեր թեգերին որոշակի սթայլեր՝

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

Ենթադրենք, հիմա div-ին ավելացված է կլիկի իրադարձության մշակիչ՝

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

Քանի որ մեր div-ն ունի padding, ապա, երբ կլիկ ենք անում div-ի վրա, կարող ենք դիպչել պարագրաֆին, կամ կարող ենք դիպչել այն տեղին, որտեղ պարագրաֆ չկա, այսինքն՝ անմիջապես div-ին։

Սակայն, կլիկի մշակիչում this-ը միշտ ցույց կտա այն տարրը, որին ավելացված է մշակիչը։ Մեր դեպքում դա մեր div-ն է՝

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

Սակայն, մենք կարող ենք ստանալ հենց այն թեգը, որում տեղի է ունեցել իրադարձությունը։ Դրա համար մենք կարող ենք տեսնել, թե ինչ է գտնվում event.target-ում՝

div.addEventListener('click', function(event) { console.log(event.target); // կամ div, կամ պարագրաֆ });

Կարելի է տարբերակել այս երկու տարբերակները՝ օգտագործելով պայմաններ՝

let div = document.querySelector('div'); div.addEventListener('click', function(event) { if (event.target.tagName === 'DIV') { console.log('կլիկ հենց div-ի վրա'); } if (event.target.tagName === 'P') { console.log('կլիկ հենց պարագրաֆի վրա'); } });

tagName-ի փոխարեն կարելի է օգտագործել matches-ը՝

let div = document.querySelector('div'); div.addEventListener('click', function(event) { if (event.target.matches('div')) { console.log('կլիկ հենց div-ի վրա'); } if (event.target.matches('p')) { console.log('կլիկ հենց պարագրաֆի վրա'); } });

Տրված են հետևյալ տարրերը՝

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

Ավելացրեք div-ին կլիկի մշակիչ։ Այս մշակիչում որոշեք, թե որ թեգում է տեղի ունեցել իրադարձությունը։

Փոփոխեք նախորդ խնդիրը։ Ապահովեք, որ li-ի վրա կլիկ անելիս, նրա վերջում ավելանա բացականչական նշան, իսկ ul-ի վրա կլիկ անելիս console-ում տպվի դրա մասին տեղեկություն։

Հայերեն
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Մենք օգտագործում ենք cookie-ներ կայքի աշխատանքի, վերլուծության և անհատականացման համար։ Տվյալների մշակումը կատարվում է համաձայն Գաղտնիության քաղաքականության։
ընդունել բոլորը կարգավորել մերժել