Přidejte posluchač událostí, který se spustí, když uživatel klikne na tlačítko:
document.getElementById("myBtn").addEventListener("click", displayDate);
Zkuste to sami →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript addEventListener()</h2>
<p>This example uses the addEventListener() method to attach a click event to a button.</p>
<button id="myBtn">Try it</button>
<p id="demo"></p>
<script>
document.getElementById("myBtn").addEventListener("click", displayDate);
function displayDate() {
document.getElementById("demo").innerHTML = Date();
}
</script>
</body>
</html>
Metoda addEventListener()
připojí k zadanému prvku obslužnou rutinu události.
Metoda addEventListener()
připojí obslužnou rutinu události k prvku, aniž by přepsala stávající obslužné rutiny události.
K jednomu prvku můžete přidat mnoho obslužných rutin událostí.
K jednomu prvku můžete přidat mnoho obslužných rutin událostí stejného typu, tj. dvě události „kliknutí“.
Posluchače událostí můžete přidat k jakémukoli objektu DOM, nejen k prvkům HTML. tj. objekt okna.
Metoda addEventListener()
usnadňuje řízení toho, jak událost reaguje na bublání.
Při použití metody addEventListener()
je kvůli lepší čitelnosti kód JavaScript oddělen od značky HTML. a umožňuje vám přidávat posluchače událostí, i když neovládáte značkování HTML.
Posluchač událostí můžete snadno odebrat pomocí metody removeEventListener()
.
element.addEventListener(event, function, useCapture);
Prvním parametrem je typ události (například "kliknutí
" nebo "mousedown
" nebo jakákoli jiná událost HTML DOM.)
Druhým parametrem je funkce, kterou chceme volat, když dojde k události.
Třetí parametr je booleovská hodnota určující, zda se má použít probublávání událostí nebo zachycování událostí. Tento parametr je volitelný.
Všimněte si, že nepoužíváte předpona "zapnuto" pro událost; použijte "click
" místo "onclick
".
Upozornění "Ahoj světe!" když uživatel klikne na prvek:
element.addEventListener("click", function(){ alert("Hello World!"); });
Zkuste to sami →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript addEventListener()</h2>
<p>This example uses the addEventListener() method to attach a click event to a button.</p>
<button id="myBtn">Try it</button>
<script>
document.getElementById("myBtn").addEventListener("click", function() {
alert("Hello World!");
});
</script>
</body>
</html>
Můžete také odkazovat na externí „pojmenovanou“ funkci:
Upozornění "Ahoj světe!" když uživatel klikne na prvek:
element.addEventListener("click", myFunction);
function myFunction() {
alert ("Hello World!");
}
Zkuste to sami →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript addEventListener()</h2>
<p>This example uses the addEventListener() method to execute a function when a user clicks on a button.</p>
<button id="myBtn">Try it</button>
<script>
document.getElementById("myBtn").addEventListener("click", myFunction);
function myFunction() {
alert ("Hello World!");
}
</script>
</body>
</html>
Metoda addEventListener()
umožňuje přidat mnoho událostí do stejné prvek bez přepsání existujících událostí:
element.addEventListener("click", myFunction);
element.addEventListener("click", mySecondFunction);
Zkuste to sami →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript addEventListener()</h2>
<p>This example uses the addEventListener() method to add two click events to the same button.</p>
<button id="myBtn">Try it</button>
<script>
var x = document.getElementById("myBtn");
x.addEventListener("click", myFunction);
x.addEventListener("click", someOtherFunction);
function myFunction() {
alert ("Hello World!");
}
function someOtherFunction() {
alert ("This function was also executed!");
}
</script>
</body>
</html>
Do stejného prvku můžete přidat události různých typů:
element.addEventListener("mouseover", myFunction);
element.addEventListener("click", mySecondFunction);
element.addEventListener("mouseout", myThirdFunction);
Zkuste to sami →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript addEventListener()</h2>
<p>This example uses the addEventListener() method to add many events on the same button.</p>
<button id="myBtn">Try it</button>
<p id="demo"></p>
<script>
var x = document.getElementById("myBtn");
x.addEventListener("mouseover", myFunction);
x.addEventListener("click", mySecondFunction);
x.addEventListener("mouseout", myThirdFunction);
function myFunction() {
document.getElementById("demo").innerHTML += "Moused over!<br>";
}
function mySecondFunction() {
document.getElementById("demo").innerHTML += "Clicked!<br>";
}
function myThirdFunction() {
document.getElementById("demo").innerHTML += "Moused out!<br>";
}
</script>
</body>
</html>
Metoda addEventListener()
umožňuje přidávat posluchače událostí do libovolného kódu HTML Objekt DOM, jako jsou prvky HTML, dokument HTML, objekt okna nebo jiné objekty, které podporují události, jako je objekt xmlHttpRequest
.
Přidejte posluchač události, který se spustí, když uživatel změní velikost okna:
window.addEventListener("resize", function(){
document.getElementById("demo").innerHTML = sometext;
});
Zkuste to sami →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript addEventListener()</h2>
<p>This example uses the addEventListener() method on the window object.</p>
<p>Try resizing this browser window to trigger the "resize" event handler.</p>
<p id="demo"></p>
<script>
window.addEventListener("resize", function(){
document.getElementById("demo").innerHTML = Math.random();
});
</script>
</body>
</html>
Při předávání hodnot parametrů použijte "anonymní funkce", která volá zadanou funkci s parametry:
element.addEventListener("click", function(){ myFunction(p1, p2); });
Zkuste to sami →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript addEventListener()</h2>
<p>This example demonstrates how to pass parameter values when using the addEventListener() method.</p>
<p>Click the button to perform a calculation.</p>
<button id="myBtn">Try it</button>
<p id="demo"></p>
<script>
let p1 = 5;
let p2 = 7;
document.getElementById("myBtn").addEventListener("click", function() {
myFunction(p1, p2);
});
function myFunction(a, b) {
document.getElementById("demo").innerHTML = a * b;
}
</script>
</body>
</html>
Existují dva způsoby šíření událostí v HTML DOM, probublávání a zachycování.
Šíření události je způsob, jak definovat pořadí prvků, když nastane událost. Pokud máte prvek <p> uvnitř prvku <div> a uživatel klikne na prvek <p>, událost "click" by měla být zpracována jako první?
Při bublání se nejprve zpracuje nejvnitřnější událost prvku a poté vnější: Nejprve se zpracuje událost kliknutí prvku <p> a poté událost kliknutí prvku <div>.
Při zachycování je nejprve zpracována událost nejvíce vnějšího prvku a poté vnitřní: Nejprve bude zpracována událost kliknutí prvku <div> a poté událost kliknutí prvku <p>.
Pomocí metody addEventListener() můžete určit typ šíření pomocí parametru "useCapture":
addEventListener(event, function, useCapture);
Výchozí hodnota je false, která použije šíření bublání, když je hodnota nastavena na hodnotu true, událost používá šíření zachycování.
document.getElementById("myP").addEventListener("click", myFunction, true);
document.getElementById("myDiv").addEventListener("click", myFunction, true);
Zkuste to sami →
<!DOCTYPE html>
<html>
<head>
<style>
#myDiv1, #myDiv2 {
background-color: coral;
padding: 50px;
}
#myP1, #myP2 {
background-color: white;
font-size: 20px;
border: 1px solid;
padding: 20px;
}
</style>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>
<body>
<h2>JavaScript addEventListener()</h2>
<div id="myDiv1">
<h2>Bubbling:</h2>
<p id="myP1">Click me!</p>
</div><br>
<div id="myDiv2">
<h2>Capturing:</h2>
<p id="myP2">Click me!</p>
</div>
<script>
document.getElementById("myP1").addEventListener("click", function() {
alert("You clicked the white element!");
}, false);
document.getElementById("myDiv1").addEventListener("click", function() {
alert("You clicked the orange element!");
}, false);
document.getElementById("myP2").addEventListener("click", function() {
alert("You clicked the white element!");
}, true);
document.getElementById("myDiv2").addEventListener("click", function() {
alert("You clicked the orange element!");
}, true);
</script>
</body>
</html>
Metoda removeEventListener()
odstraňuje obslužné rutiny událostí, které byly připojené pomocí metody addEventListener():
element.removeEventListener("mousemove", myFunction);
Zkuste to sami →
<!DOCTYPE html>
<html>
<head>
<style>
#myDIV {
background-color: coral;
border: 1px solid;
padding: 50px;
color: white;
font-size: 20px;
}
</style>
</head>
<body>
<h2>JavaScript removeEventListener()</h2>
<div id="myDIV">
<p>This div element has an onmousemove event handler that displays a random number every time you move your mouse inside this orange field.</p>
<p>Click the button to remove the div's event handler.</p>
<button onclick="removeHandler()" id="myBtn">Remove</button>
</div>
<p id="demo"></p>
<script>
document.getElementById("myDIV").addEventListener("mousemove", myFunction);
function myFunction() {
document.getElementById("demo").innerHTML = Math.random();
}
function removeHandler() {
document.getElementById("myDIV").removeEventListener("mousemove", myFunction);
}
</script>
</body>
</html>
Seznam všech událostí HTML DOM naleznete v naší úplné Referenční příručce objektu událostí HTML DOM.