Metoda addEventListener
Metoda addEventListener pozwala przypisać
do elementu obsługę zdarzeń. Za jej pomocą
można określić, na przykład, co zrobić po kliknięciu
przycisku lub co zrobić podczas wpisywania tekstu
w polu tekstowym. W pierwszym parametrze określamy
typ zdarzenia, w drugim - funkcję, która
będzie wywoływana po zdarzeniu określonym
w pierwszym parametrze. W trzecim opcjonalnym parametrze
przekazujemy charakterystyki obiektu (once, capture,
passive) lub parametr useCapture.
Składnia
element.addEventListener('typ zdarzenia', funkcja, [charakterystyki obiektu]);
lub
element.addEventListener('typ zdarzenia', funkcja, [useCapture]);
Przykład
Sprawmy, aby po kliknięciu przycisku wyświetlała się wiadomość:
<input type="button" id="button" value="click me">
let button = document.querySelector('#button');
button.addEventListener('click', function() {
alert('message');
});
:
Przykład
Napiszmy kod, aby po utracie fokusu w polu input wyświetlała się wiadomość z tekstem z tego pola:
<input id="input" value="text">
let input = document.querySelector('#input');
input.addEventListener('blur', function() {
alert(this.value);
});
:
Przykład
Sprawmy, aby po kliknięciu przycisku wiadomość wyświetlała się w konsoli tylko raz. W tym celu skorzystamy z drugiego parametru:
<input type="button" id="button" value="click me">
let button = document.querySelector('#button');
button.addEventListener('click',
function() {
console.log('message');
},
{
once: true
}
);
Przykład
Parametr passive zabrania wywoływania metody
event.preventDefault podczas obsługi zdarzenia.
Do poprzedniego przykładu zastosujmy metodę
event.preventDefault, a także określmy w
parametrze passive wartość true:
<input type="button" id="button" value="click me">
let button = document.querySelector('#button');
button.addEventListener('click',
function(event) {
event.preventDefault();
console.log('No message');
},
{
passive: true
}
);
Po wykonaniu kodu zobaczymy następujące komunikaty:
'No message';
'Unable to preventDefault inside passive event listener invocation.'
Przykład
Parametr useCapture o wartości
true pokazuje propagację zdarzeń
od elementu wewnętrznego do zewnętrznego, przy
wartości false - od zewnętrznego
do wewnętrznego elementu. Podczas przekazywania
parametru useCapture jego nazwa jest pomijana
i zapisuje się po prostu true lub false.
Zobaczmy jak propagują się zdarzenia w elemencie nadrzędnym
i podrzędnym po kliknięciu na nie:
<div id="parent">Parent
<p id="child">Child</p>
</div>
#parent{
width: 60px;
padding: 10px;
border: 1px solid red;
text-align: center;
}
#child{
width: 60px;
marging-right: 40px;
border: 1px solid blue;
text-align: center;
}
let parent = document.querySelector('#parent');
let child = document.querySelector('#parent');
parent.addEventListener('click',
() => alert('parent'),
true
);
child.addEventListener('click',
() => alert('child'),
true
);
:
Zobacz także
-
metoda
removeEventListener,
która odwiązuje zdarzenie od elementu