Stap 4, eerst oranje
Als je deze stap hebt gedaan dan kun je niet in één keer van groen naar rood. Staat het licht op groen en je drukt op rood dan zal het oranje licht aan gaan.
Als we het licht op groen hebben staan en we drukken op rood dan gaat het licht op rood.
Maar eigenlijk mag dit niet. Als je van groen naar rood gaat dan moet het licht eerst naar oranje!
De opdracht is nu om als we op rood drukken een controle te maken of welk licht aan is. Is het groen licht aan dan gebeurt er niets.
Onthoud de kleur
Om dit te kunnen doen, moeten we eerst in de code 'onthouden' welke lamp aan is.
Dit gaan we onthouden in een variabele.
Helemaal bovenaan in de code tussen (<script> en </script>) plaatsen we de volgende code.
var colorOn;
Hiermee maken we een variabele waarin we 'onthouden' welke lamp aan is.
Nu moeten we zorgen dat de juiste waarde in variabele wordt gezet.
In het if-blokje van green, zetten we
colorOn = 'green';
In het rode blokje zetten we natuurlijk
colorOn = 'red'
En in het orange blokje zetten we
colorOn='orange'
Nu wordt telkens als er een lamp wordt aangezet de kleur van de lamp onthouden in de variabele colorOn.
Controle bij rood
In het de code vlak onder de regel:
if (color === 'red') {
gaan we nu controleren of het groene licht aan is.
Dat doen we met de volgende code:
if ( colorOn == 'green' ){
return;
}
Wat hier staat is dat als het groene licht aan is, we de functie verlaten en verder niets meer doen. Het rode licht gaat dan dus niet meer aan.
Testen
Dus we kunnen op een lamp drukken en dan gaat de lamp aan, behalve als de groen lamp aan is en we drukken op de rode lamp dan gebeurt er niets. Dit mag immers niet omdat we eerst op oranje moeten drukken.
Rood via oranje
Als het stoplicht op groen staat en we drukken op rood dan gebeurt er nu niets. Maar we zouden in dit geval ook het licht op oranje kunnen zetten.
Dus als het licht op groen staat en je drukt op rood dan gaat het oranje licht aan.
Wat gebeurt er nu als we van groen naar rood willen gaan? Dan wordt er een return uitgevoerd en dat betekent dat er niets gebeurt. In plaats van de return zouden we ook het licht op oranje kunnen zetten en daarna de functie stoppen via een return.
Kan jij bedenken hoe je dit zou moeten doen?
Kijk eens wat er gebeurt als je op het licht klikt? Dan wordt de functie aangeroepen. Vlak voor s de return zou je dus ook eerst het licht op oranje kunnen zetten door op de juiste manier de functie kunnen aanroepen.
Testen
Alle lichten gaan aan als je op het licht drukt, behalve als je op het rode licht drukt, terwijl het groene licht aan staat dan zal het oranje licht gaan branden.
--