Events


Good to know: button
Een HTML-element dat we in JavaScript vaak nodig hebben, is het <button> element
- Wordt gebruikt om acties uit te voeren
- doet uit zichzelf niets
<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:
- click = een gebruiker klikt op iets
- keydown = een toets wordt ingedrukt
- mouseover = de cursor beweegt over een element
- submit = formulier wordt ingediend
- ...
🔥 Events triggeren
Een event wordt getriggerd of geactiveerd door:
- een interactie van de gebruiker, zoals een
click - een script, zoals
myButton.click() - of automatisch, wanneer een taak in de achtergrond is afgerond, zoals het inladen van het volledige HTML document:
DOMContentLoaded
🥅 Events opvangen
- Je kan naar een event "luisteren"
= een seintje krijgen als het gebeurd is - Hiervoor gebruik je een event listener
- Daarna kan je een stukje code laten uitvoeren
const alertButton = document.querySelector("button");
alertButton.addEventListener("click", function() {
alert("Iemand heeft op de knop geklikt!");
});Event Listeners
.addEventListener()
- Met de
.addEventListener()method kan je een event detecteren en erop reageren - Je hangt het aan een target zoals
documentof 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:
- het soort event waarnaar geluisterd moet worden
- een stukje code dat je wilt uitvoeren wanneer het event gebeurt = een functie
document.addEventListener("click", function() {
// code
});Inline function
- Wordt direct in de
addEventListenergeplaatst - Een functie start met
function()Daarna zet je de code die je wilt uitvoeren tussen accolades{ } - Handig voor kleine acties, maar niet herbruikbaar
document.addEventListener("click", function() {
console.log("Geklikt!");
});
Named functions
- Herbruikbaar
- Je schrijft de functie apart en geeft een unieke naam naast het
functionkeyword. - Daarna gebruik je deze naam in je eventListener.
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-
Met muis/keypad of op
enterduwen - Wordt gebruikt voor knoppen, links, en interactieve elementen
<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 ingedrukt -
keyup: wanneer een toets wordt losgelaten - het event object geeft je toegang tot extra informatie, zoals welke toets er ingedrukt werd
document.addEventListener("keydown", function(event) {
console.log("Je drukte op: " + event.key);
});
Muis events
-
mouseover: wanneer de cursor over een (child) element gaat -
mouseout: 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 gaat
document.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 afbeeldingen -
load: wanneer alles is geladen, inclusief styles en afbeeldingen
document.addEventListener("DOMContentLoaded", function() {
console.log("Pagina geladen!");
});En nog zo veel meer
-
input: wanneer een input veld wordt gewijzigd -
contextmenu: wanneer de rechtermuisknop wordt ingeduwd (voordat het contextmenu opent) -
submit: bij het indienen van een formulier -
transitionend: wanneer een CSS transitie gedaan is -
scroll: wanneer een element gescrolld is - ...
Je vindt een volledig overzicht op de MDN pagina over Elements > linker zijbalk 'Events'
Event Bubbling & Preventing Default
Event bubbling (basis)
- Events bubbelen omhoog in de DOM
- = worden doorgegeven naar parents en andere ancestors, tot aan de root
-
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()
- Voorkomt het standaard gedrag van een event
-
Voorbeelden:
- Een formulier (
<form>) versturen → Voorkomt dat de pagina herlaadt en in plaats daarvan een bericht tonen op de pagina. - Een 'ben je zeker dat je deze link wilt bezoeken' alert tonen vooraleer de gebruiker wordt doorgestuurd naar een externa pagina.
- Een formulier (
<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 🚴♀️🚴♀️

5. Events
By Lecturer GDM
5. Events
- 474