Metoda addEventListener
Metoda addEventListener umožňuje přiřadit
prvku obslužné rutiny událostí. S její pomocí
lze například určit, co dělat při kliknutí
na tlačítko nebo co dělat při psaní textu
do textového pole. V prvním parametru určujeme
typ předávané události, ve druhém - funkci, která
se spustí po události uvedené
v prvním parametru. Ve třetím volitelném parametru
předáváme charakteristiky objektu (once, capture,
passive) nebo parametr useCapture.
Syntaxe
prvek.addEventListener('typ události', funkce, [charakteristiky objektu]);
nebo
prvek.addEventListener('typ události', funkce, [useCapture]);
Příklad
Udělejme to, aby po kliknutí na tlačítko bylo vypsáno zpráva:
<input type="button" id="button" value="click me">
let button = document.querySelector('#button');
button.addEventListener('click', function() {
alert('message');
});
:
Příklad
Napišme kód, aby při ztrátě fokusu v inputu byla vypsána zpráva s textem tohoto inputu:
<input id="input" value="text">
let input = document.querySelector('#input');
input.addEventListener('blur', function() {
alert(this.value);
});
:
Příklad
Udělejme to, aby po kliknutí na tlačítko byla zpráva vypsána do konzole pouze jednou. K tomu využijeme druhý parametr:
<input type="button" id="button" value="click me">
let button = document.querySelector('#button');
button.addEventListener('click',
function() {
console.log('message');
},
{
once: true
}
);
Příklad
Parametr passive zakazuje volat metodu
event.preventDefault při zpracování události.
Použijme na předchozí příklad metodu
event.preventDefault a také určeme v
parametru passive hodnotu 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 provedení kódu uvidíme následující zprávy:
'No message';
'Unable to preventDefault inside passive event listener invocation.'
Příklad
Parametr useCapture s hodnotou
true ukazuje probublávání událostí
od vnitřního prvku k vnějšímu, při
hodnotě false - od vnějšího
k vnitřnímu prvku. Při předávání
parametru useCapture se jeho název vynechává
a zapisuje se prostě true nebo false.
Podívejme se, jak probublávají události v nadřazeném
a podřízeném prvku při kliknutí na ně:
<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
);
:
Viz také
-
metoda
removeEventListener,
která odpojuje událost od prvku