Lisää tapahtumaseurain, joka käynnistyy, kun käyttäjä napsauttaa painiketta:
document.getElementById("myBtn").addEventListener("click", displayDate);Kokeile itse →
<!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>
Metodi addEventListener() liittää tapahtumakäsittelijän määritettyyn elementtiin.
Metodi addEventListener() liittää tapahtumakäsittelijän elementtiin ilman, että olemassa olevia tapahtumakäsittelijöitä korvataan.
Voit lisätä useita tapahtumakäsittelijöitä yhteen elementtiin.
Voit lisätä yhteen elementtiin useita samantyyppisiä tapahtumakäsittelijöitä, eli kaksi "click"-tapahtumaa.
Voit lisätä tapahtumaseuraajia mihin tahansa DOM-objektiin, ei vain HTML-elementteihin. eli ikkunaobjekti.
Metodi addEventListener() helpottaa tapahtuman reagointia kuplimiseen.
addEventListener()-menetelmää käytettäessä JavaScript erotetaan HTML-merkinnöistä paremman luettavuuden vuoksi ja voit lisätä tapahtumaseuraajia, vaikka et hallitse HTML-merkintöjä.
Voit poistaa tapahtumaseurannan helposti käyttämällä removeEventListener()-menetelmää.
element.addEventListener(event, function, useCapture);Ensimmäinen parametri on tapahtuman tyyppi (kuten "click" tai "hiiri alas" tai mikä tahansa muu HTML DOM -tapahtuma.)
Toinen parametri on funktio, jota haluamme kutsua tapahtuman tapahtuessa.
Kolmas parametri on boolen arvo, joka määrittää, käytetäänkö tapahtumien kuplitusta vai tapahtumien sieppausta. Tämä parametri on valinnainen.
Huomaa, että et käytä "päällä" tapahtuman etuliite; käytä "click" -sanaa "onclick:n sijaan.
Varoitus "Hei maailma!" kun käyttäjä napsauttaa elementtiä:
element.addEventListener("click", function(){ alert("Hello World!"); });Kokeile itse →
<!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>
Voit myös viitata ulkoiseen "nimettyyn" funktioon:
Varoitus "Hei maailma!" kun käyttäjä napsauttaa elementtiä:
element.addEventListener("click", myFunction);
function myFunction() {
alert ("Hello World!");
}Kokeile itse →
<!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>
Metodin addEventListener() avulla voit lisätä useita tapahtumia samaan elementtiä ilman olemassa olevien tapahtumien päällekirjoittamista:
element.addEventListener("click", myFunction);
element.addEventListener("click", mySecondFunction);
Kokeile itse →
<!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>
Voit lisätä erityyppisiä tapahtumia samaan elementtiin:
element.addEventListener("mouseover", myFunction);
element.addEventListener("click", mySecondFunction);
element.addEventListener("mouseout", myThirdFunction);Kokeile itse →
<!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>
addEventListener()-menetelmän avulla voit lisätä tapahtumaseuraajia mihin tahansa HTML-koodiin DOM-objekti, kuten HTML-elementit, HTML-dokumentti, ikkunaobjekti tai muu tapahtumia tukevat objektit, kuten xmlHttpRequest-objekti.
Lisää tapahtumaseurain, joka käynnistyy, kun käyttäjä muuttaa ikkunan kokoa:
window.addEventListener("resize", function(){
document.getElementById("demo").innerHTML = sometext;
});Kokeile itse →
<!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>
Kun annat parametriarvoja, käytä "anonyymi funktio", joka kutsuu määritettyä funktiota seuraavilla parametreilla:
element.addEventListener("click", function(){ myFunction(p1, p2); });Kokeile itse →
<!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>
HTML DOM:ssa tapahtumien leviämiseen on kaksi tapaa, kuplitus ja sieppaus.
Tapahtuman eteneminen on tapa määrittää elementtien järjestys tapahtuman tapahtuessa. Jos sinulla on <p>-elementti <div>-elementin sisällä ja käyttäjä napsauttaa <p>-elementtiä, minkä elementin "click"-tapahtuma pitäisi käsitellä ensin?
Kuplituksessa käsitellään ensin sisemmän elementin tapahtuma ja sitten ulompi: <p>-elementin napsautustapahtuma käsitellään ensin ja sitten <div>-elementin napsautustapahtuma.
kaappauksessa uloimman elementin tapahtuma käsitellään ensin ja sitten sisempi: <div>-elementin napsautustapahtuma käsitellään ensin ja sitten <p>-elementin napsautustapahtuma.
AddEventListener()-metodilla voit määrittää etenemistyypin käyttämällä "useCapture"-parametria:
addEventListener(event, function, useCapture);Oletusarvo on false, joka käyttää kuplivaa etenemistä, kun arvoksi on asetettu tosi, tapahtuma käyttää kaappauksen etenemistä.
document.getElementById("myP").addEventListener("click", myFunction, true);
document.getElementById("myDiv").addEventListener("click", myFunction, true);Kokeile itse →
<!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>
Metodi removeEventListener() poistaa tapahtumakäsittelijät, jotka on liitetty addEventListener()-metodilla:
element.removeEventListener("mousemove", myFunction);Kokeile itse →
<!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>
Katso luettelo kaikista HTML DOM -tapahtumista täydellisestä HTML DOM -tapahtumaobjektiviittauksesta.