⊗jsPmOEBTE 424 of 505 menu

Получаване на целевия елемент при излитане на събития

Нека имаме два елемента: div и параграф p, намиращ се вътре в този div:

<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 в конзолата да се извежда информация за това.

Български
AfrikaansAzərbaycanবাংলাБеларускаяČeštinaDanskDeutschΕλληνικά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
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне