Events
Good to know: button
Een HTML-element dat we in JavaScript vaak nodig hebben, is het <button>
element
<button class="start">Start animation</button>
Verschil Buttons & Anchors
<a>
: navigatie naar een andere pagina of sectie<button>
: interacties met JavaScript💅 De styling kan gelijkaardig zijn, maar semantisch zijn het 2 verschillende elementen!
⚠️ Je kan <button>
en <a>
nooit combineren
Wat is een event?
Event
= Een gebeurtenis die optreedt in de browser, vb:
🔥 Events triggeren
Een event wordt getriggerd of geactiveerd door:
click
myButton.click()
DOMContentLoaded
🥅 Events opvangen
const alertButton = document.querySelector("button");
alertButton.addEventListener("click", function() {
alert("Iemand heeft op de knop geklikt!");
});
Event Listeners
.addEventListener()
.addEventListener()
method kan je een event detecteren en erop reageren
document
of eender welk HTML element dat je uit de DOM haalt.document.addEventListener("keydown", function() {
// code
});
document.querySelector("button").addEventListener("click", function() {
// code
});
.addEventListener()
Een event listener heeft 2 parameters nodig:
document.addEventListener("click", function() {
// code
});
Inline function
addEventListener
geplaatstfunction()
Daarna zet je de code die je wilt uitvoeren tussen accolades { }
document.addEventListener("click", function() {
console.log("Geklikt!");
});
Named functions
function
keyword.function handleClick() {
console.log("Geklikt!");
}
myButton.addEventListener("click", handleClick);
mySecondButton.addEventListener("click", handleClick);
Let op: Hier gebruiken we geen haakjes ()
om de functie op te roepen.
Zo vermijden we dat de functie al eens opgeroepen bij het inladen van het script.
Event Object
Geeft extra info over het event
Krijg je 'gratis' mee als parameter in je functie
bijvoorbeelden:
document.addEventListener("click", function(event) {
console.log("Je klikte op:", event.target);
});
event.target
: het element waarop geklikt is
event.type
: type event (vb. "click" of "keydown")
event.clientX
& event.clientY
: x- & y-coördinaat van de muis
Veelgebruikte events
Klik events
click
enter
duwen
<button id="my-button">Klik hier!</button>
<p id="text">Loading...</p>
index.html
const button = document.getElementById("my-button");
button.addEventListener("click", function() {
document.getElementById("text").innerText = "Je hebt geklikt!";
});
main.js
Toetenbord events
keydown
: wanneer een toets wordt ingedruktkeyup
: wanneer een toets wordt losgelaten
document.addEventListener("keydown", function(event) {
console.log("Je drukte op: " + event.key);
});
Muis events
mouseover
: wanneer de cursor over een (child) element gaatmouseout
: wanneer de cursor uit een element weg gaat of vanuit een child element naar de parent beweegt
mouseleave
: wanneer de cursor uit een element en uit alle child elementen weg gaatdocument.addEventListener("mouseleave", triggerEmailPopUp;
function triggerEmailPopUp() {
alert("Wil je onze nieuwsbrief ontvangen? Schrijf je in!");
}
Page lifecycle events
DOMContentLoaded
: wanneer het HTML document volledig is geladen, maar zonder styles en afbeeldingenload
: wanneer alles is geladen, inclusief styles en afbeeldingendocument.addEventListener("DOMContentLoaded", function() {
console.log("Pagina geladen!");
});
En nog zo veel meer
input
: wanneer een input veld wordt gewijzigdcontextmenu
: wanneer de rechtermuisknop wordt ingeduwd (voordat het contextmenu opent)submit
: bij het indienen van een formuliertransitionend
: wanneer een CSS transitie gedaan isscroll
: wanneer een element gescrolld isJe vindt een volledig overzicht op de MDN pagina over Elements > linker zijbalk 'Events'
Event Bubbling & Preventing Default
Event bubbling (basis)
event.stopPropagation();
stopt het omhoog bubbelen<div id="parent">
<button id="child">Klik hier</button>
</div>
index.html
document.getElementById("parent").addEventListener("click", function() {
console.log("Parent geklikt!");
});
document.getElementById("child").addEventListener("click", function(event) {
console.log("Child geklikt!");
event.stopPropagation(); // Voorkomt bubbling
});
main.js
preventDefault()
Voorbeelden:
<form>
) versturen → Voorkomt dat de pagina herlaadt en in plaats daarvan een bericht tonen op de pagina.<a href="https://digitalevormgeving.gent" id="link">Portfolio van DVG</a>
index.html
document.getElementById("link").addEventListener("click", function(event) {
event.preventDefault();
alert("Link is geblokkeerd!");
});
main.js
Demo time 🚴♀️🚴♀️