De praktijk
In de eerste JavaScript les heb je theorie geleerd over variabelen en if-statements. In deze les gaan we die theorie in de praktijk brengen door zelf JavaScript te schrijven.
Let op: Zorg dat de koppeling met het js bestand altijd als laatste regel in je body (dus vlak voor de </body>
tag) blijft staan. Anders heb je kans dat je JavaScript niet werkt.
Wij gebruiken JavaScript meestal om bestaande HTML-elementen op de pagina aan te passen. In de volgende paragrafen zul je zien hoe we met JS de inhoud of de opmaak van een element veranderen.
Omdat we een bestaand HTML element op de pagina willen gaan aanpassen, moeten we JavaScript eerst vertellen welk element we willen aanpassen. De code die hiervoor gebruikt wordt is document.querySelector( )
. Query betekent vraag: we vragen aan het document om een selectie te doen op basis van wat we tussen de haakjes ( )
zetten.
In CSS heb je geleerd dat een id
wordt aangeduid met een #
. Ditzelfde geldt ook in JS. Het document gaat bijvoorbeeld op zoek naar het element met id “blokje”. Als dat element gevonden wordt, kunnen we opmaak etc. gaan aanpassen. Maar als we voor elke aanpassing steeds opnieuw een querySelector uit moesten voeren, zou de code nogal herhalend worden. Daarom slaan we het gevonden element op in een variabele.
div
met id “blokje”. Zet in die div de tekst “Hello World”. Geef in CSS diezelfde div, door middel van z’n id, een achtergrondkleur, een lettertype en een padding. Controleer in je browser of dit gelukt is.
Maak in javascript een verwijzing naar dit element, door dit in script.js te plakken:
let blokje = document.querySelector("#blokje")
Wat betekent bovenstaande code? Met let blokje
maken we een variabele aan die blokje heet. Met document.querySelector
gaan we in het document (de webpagina) op zoek naar "#blokje"
, oftewel een element met id “blokje”. Een verwijzing naar dat element wordt opgeslagen in de variabele.
Nu javascript weet welk element je bedoelt omdat je een verwijzing hebt gemaakt, kun je die verwijzing gebruiken om eigenschappen van het blokje aan te passen. Je kunt in JS iedere CSS eigenschap aanpassen, zie deze lijst voor hoe de eigenschappen in JS heten.
blokje.style.backgroundColor = "yellow";
Wordt je blokje niet geel? Controleer dan eerst of je geen typfouten hebt gemaakt. Controleer ook of je html bestand wel aan je script bestand is gelinkt, zoals beschreven op https://cmd.camp/html-css-en-js-checklist/.
Wat zien we in bovenstaande code gebeuren? We zien dat we de style
van een element kunnen aanpassen in JavaScript. In dit geval doen we dat met de backgroundColor
, maar je kunt in principe elke CSS eigenschap op die manier aanpassen. Let er alleen op dat als een eigenschap in CSS geschreven wordt met een streepje, je die in JS aan elkaar schrijft met een hoofdletter. background-color
in CSS wordt dus backgroundColor
in JS. font-family
in CSS wordt dus fontFamily
in JS. Op deze pagina vind je een lijst van de meest gebruikte eigenschappen, en hoe ze in CSS en JS heten.
blokje.style.fontFamily = "Comic Sans MS";
Naast de opmaak van een element, kun je in JS ook de inhoud (de HTML) in een element aanpassen. Plak dit onderaan je code:
blokje.innerHTML = "Dit is tekst!";
innerHTML
past dus de HTML in een element aan.
In plaats van rechtstreeks de tekst te typen, kunnen we ook de inhoud van een variabele gebruiken. Dat wordt later handig. Pas je code aan:
let tekst = "Dit is tekst!";
blokje.innerHTML = tekst;
+=
blokje.innerHTML = "Dit is";
blokje.innerHTML += " tekst!";
Tot nu toe hebben we alle JavaScript code gewoon los in ons js bestand geschreven. Het gevolg is dat alle code meteen wordt uitgevoerd als de pagina geladen wordt. Tot nu toe was dat geen probleem, maar soms wil je liever dat code pas op een bepaald moment wordt uitgevoerd. Bijvoorbeeld als de gebruiker op een knop klikt, een formulier heeft ingevuld, of als een timer afloopt.
Code die op een bepaald moment moet worden uitgevoerd, stop je in een functie:
function zegHallo() {
blokje.innerHTML = "Hallo!";
blokje.style.backgroundColor = "tomato";
}
Zoals je ziet maak je een functie met het woord function
. Daarna verzin je zelf een naam gevolgd door ()
. De code in de functie staat in een codeblok aangegeven met {}
, net als bij een if-statement.
Maak in HTML en CSS een knop.
Hoe? Je kunt dat op meerdere manieren doen. Je kunt bijvoorbeeld:
• een <div>
of een <a>
maken en die er met CSS uit laten zien als een knop
KNOP
• een <img>
gebruiken
• een <button>
element maken en eventueel opmaken met CSS
Die keuze is aan jou.
Tip: geef de knop de CSS-eigenschap cursor: pointer;
zodat de muisaanwijzer een ‘handje’ wordt.
Geef je knop de id “knop”.
Gebruik in JavaScript document.querySelector
om een verwijzing te maken naar de id van de knop op te slaan in een variabele. Doe dit altijd bovenaan je JS bestand.
Als je alles goed hebt gedaan kun je met de volgende code aangeven dat als je op de knop klikt, de zegHallo()
functie gestart moet worden. Plak deze code buiten de functie.
knop.onclick = zegHallo;
Met onclick
geven we dus aan welke functie gestart moet worden als de gebruiker op het element klikt.
Iets waar JavaScript ook heel vaak voor gebruikt wordt, is het uitlezen van formulierelementen, zoals tekstinputs, checkboxes en datumselecties. Heb je nog niet gewerkt met formulierelementen? Neem dan eerst even een kijkje op deze pagina.
id
“welkomTitel”. Zet daar de tekst “Welkom” in.id
“naam”.id
“knop” en de value
“Klik hier!”document.querySelector
naar alledrie de elementen. Noem elke variabele het zelfde als de id.function leesInput() {
welkomTitel.innerHTML += naam.value;
}
knop.onclick = leesInput;
Je ziet hier dat .value
de waarde uit een input-veld haalt. Die waarde wordt vervolgens toegevoegd aan de h1.
In plaats van onclick
kun je bij formulierelementen ook gebruik maken van oninput
, die een functie start elke keer als je de waarde verandert.
<input type="range" min="0" max="100" id="slider">
<div id="sliderWaarde">0</div>
JS
let slider = document.querySelector("#slider");
let sliderWaarde = document.querySelector("#sliderWaarde");
function toonWaarde() {
sliderWaarde.innerHTML = slider.value;
}
slider.oninput = toonWaarde;
Bekijk de video’s waarin we praktische voorbeelden van het gebruik van JS laten zien, en gebruik ze waar nodig in je eigen project.