Voorwaardelijke opmaak
Ik ben bezig met dingen uitvogelen in Javascript. Ik heb een applicatie gemaakt die drie getallen invoert en die dan op het scherm (via HTML) wordt geprint. Ook wordt een gemiddelde berekend en op het scherm geprint. Tot zover ben ik tevreden. Echter kom ik er niet uit als ik met voorwaardelijke opmaak wil werken. Dus dat als het resultaat van een deeltentamen kleiner dan 5,5 is dat de letterkleur van dat resultaat rood wordt. Datzelfde wil ik voor het eindresultaat. Als het eindresultaat of de afzonderlijke resultaten een 5.5 of hoger zijn dan moet de kleur groen worden.
Iemand een idee om mij op de juiste weg te helpen?
Iemand een idee om mij op de juiste weg te helpen?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<html>
<head>
<title>Resultaten invoeren</title>
</head>
<body>
Resultaat eerste deeltentamen: <input type = "number" value = "" id = "eersteTentamen"> <br>
Resultaat tweede deeltentamen: <input type = "number" value = "" id = "tweedeTentamen"> <br>
Resultaat derde deeltentamen: <input type = "number" value = "" id = "derdeTentamen"> <br><br>
<input type = "submit" value = "Resultaten bevestigen" onclick = "berekening()"><br><br>
Resultaat eerste deeltentamen: <span id = "res1"></span><br>
Resultaat tweede deeltentamen: <span id = "res2"></span><br>
Resultaat derde deeltentamen: <span id = "res3"></span><br><br>
<b>Het eindresultaat is: </b> <span id = "eindresultaat"></span>
<script>
function berekening() {
var resultaat1 = parseInt(document.getElementById("eersteTentamen").value);
var resultaat2 = parseInt(document.getElementById("tweedeTentamen").value);
var resultaat3 = parseInt(document.getElementById("derdeTentamen").value);
document.getElementById("res1").innerHTML = resultaat1;
document.getElementById("res2").innerHTML = resultaat2;
document.getElementById("res3").innerHTML = resultaat3;
var eindResultaat = ((resultaat1 + resultaat2 + resultaat3)/3).toFixed(1);
document.getElementById("eindresultaat").innerHTML = eindResultaat;
}
</script>
</body>
</html>
<head>
<title>Resultaten invoeren</title>
</head>
<body>
Resultaat eerste deeltentamen: <input type = "number" value = "" id = "eersteTentamen"> <br>
Resultaat tweede deeltentamen: <input type = "number" value = "" id = "tweedeTentamen"> <br>
Resultaat derde deeltentamen: <input type = "number" value = "" id = "derdeTentamen"> <br><br>
<input type = "submit" value = "Resultaten bevestigen" onclick = "berekening()"><br><br>
Resultaat eerste deeltentamen: <span id = "res1"></span><br>
Resultaat tweede deeltentamen: <span id = "res2"></span><br>
Resultaat derde deeltentamen: <span id = "res3"></span><br><br>
<b>Het eindresultaat is: </b> <span id = "eindresultaat"></span>
<script>
function berekening() {
var resultaat1 = parseInt(document.getElementById("eersteTentamen").value);
var resultaat2 = parseInt(document.getElementById("tweedeTentamen").value);
var resultaat3 = parseInt(document.getElementById("derdeTentamen").value);
document.getElementById("res1").innerHTML = resultaat1;
document.getElementById("res2").innerHTML = resultaat2;
document.getElementById("res3").innerHTML = resultaat3;
var eindResultaat = ((resultaat1 + resultaat2 + resultaat3)/3).toFixed(1);
document.getElementById("eindresultaat").innerHTML = eindResultaat;
}
</script>
</body>
</html>
Kijjk eens naar classlist.add(), classlist.remove() en classlist.toggle()
Een voorbeeldje: https://codepen.io/frankbeen/pen/qBqweQP
Een voorbeeldje: https://codepen.io/frankbeen/pen/qBqweQP
Frank Nietbelangrijk op 17/03/2021 00:55:57:
Kijjk eens naar classlist.add(), classlist.remove() en classlist.toggle()
Een voorbeeldje: https://codepen.io/frankbeen/pen/qBqweQP
Een voorbeeldje: https://codepen.io/frankbeen/pen/qBqweQP
Leuk voorbeeldje inderdaad. Wel van een hoger niveau. Ik zat zelf eerder aan if-else statements te denken. Net zoals in Excel je zegmaar op zo een manier een voorwaardelijke opmaak kan geven.
Ik ga even kijken of ik dat voorbeeldje kan matchen met wat ik zou willen.
Zoiets?
Het kan eventueel ook met alleen HTML en CSS.
Bij het HTML-element input van het type number kun je een bereik opgeven met de attributen min en max:
Voor de opmaak van waarden buiten het bereik van min en max kun je vervolgens de speciale CSS-selector out-of-range gebruiken:
Bij het HTML-element input van het type number kun je een bereik opgeven met de attributen min en max:
Voor de opmaak van waarden buiten het bereik van min en max kun je vervolgens de speciale CSS-selector out-of-range gebruiken:
Als je het netjes opsplitst in een aparte functie voorkom je ook dat het een zooitje van if-else statements word.
Even snel in elkaar getikt dus geen garantie en je moet zelf de kleur classes toevoegen:
Edit: Ik vind de ternary oplossing van Ad Fundum ook wel netjes, zoals je ziet zijn er meerdere wegen die naar Rome leiden.
Even snel in elkaar getikt dus geen garantie en je moet zelf de kleur classes toevoegen:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
function berekening() {
var resultaat1 = parseInt(document.getElementById("eersteTentamen").value);
var resultaat2 = parseInt(document.getElementById("tweedeTentamen").value);
var resultaat3 = parseInt(document.getElementById("derdeTentamen").value);
document.getElementById("res1").innerHTML = resultaat1;
document.getElementById("res2").innerHTML = resultaat2;
document.getElementById("res3").innerHTML = resultaat3;
// Aparte var omdat we een numerieke waarde willen
var numResultaat = (resultaat1 + resultaat2 + resultaat3) / 3;
var eindResultaat = numResultaat.toFixed(1);
document.getElementById("eindresultaat").innerHTML = eindResultaat;
// Dit is dus nieuw
stelKleurIn("res1", resultaat1);
stelKleurIn("res2", resultaat2);
stelKleurIn("res3", resultaat3);
stelKleurIn("eindresultaat", numResultaat);
}
// Deze functie regelt het instellen van de kleur classes
function stelKleurIn(element, cijfer) {
if (cijfer < 5.5) {
document.getElementById(element).classList.add('rood');
document.getElementById(element).classList.remove('groen');
} else {
document.getElementById(element).classList.add('groen');
document.getElementById(element).classList.remove('rood');
}
}
var resultaat1 = parseInt(document.getElementById("eersteTentamen").value);
var resultaat2 = parseInt(document.getElementById("tweedeTentamen").value);
var resultaat3 = parseInt(document.getElementById("derdeTentamen").value);
document.getElementById("res1").innerHTML = resultaat1;
document.getElementById("res2").innerHTML = resultaat2;
document.getElementById("res3").innerHTML = resultaat3;
// Aparte var omdat we een numerieke waarde willen
var numResultaat = (resultaat1 + resultaat2 + resultaat3) / 3;
var eindResultaat = numResultaat.toFixed(1);
document.getElementById("eindresultaat").innerHTML = eindResultaat;
// Dit is dus nieuw
stelKleurIn("res1", resultaat1);
stelKleurIn("res2", resultaat2);
stelKleurIn("res3", resultaat3);
stelKleurIn("eindresultaat", numResultaat);
}
// Deze functie regelt het instellen van de kleur classes
function stelKleurIn(element, cijfer) {
if (cijfer < 5.5) {
document.getElementById(element).classList.add('rood');
document.getElementById(element).classList.remove('groen');
} else {
document.getElementById(element).classList.add('groen');
document.getElementById(element).classList.remove('rood');
}
}
Edit: Ik vind de ternary oplossing van Ad Fundum ook wel netjes, zoals je ziet zijn er meerdere wegen die naar Rome leiden.
Gewijzigd op 17/03/2021 09:10:39 door Thom nvt
Thom nvt op 17/03/2021 09:08:06:
Als je het netjes opsplitst in een aparte functie voorkom je ook dat het een zooitje van if-else statements word.
Even snel in elkaar getikt dus geen garantie en je moet zelf de kleur classes toevoegen:
Edit: Ik vind de ternary oplossing van Ad Fundum ook wel netjes, zoals je ziet zijn er meerdere wegen die naar Rome leiden.
Even snel in elkaar getikt dus geen garantie en je moet zelf de kleur classes toevoegen:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
function berekening() {
var resultaat1 = parseInt(document.getElementById("eersteTentamen").value);
var resultaat2 = parseInt(document.getElementById("tweedeTentamen").value);
var resultaat3 = parseInt(document.getElementById("derdeTentamen").value);
document.getElementById("res1").innerHTML = resultaat1;
document.getElementById("res2").innerHTML = resultaat2;
document.getElementById("res3").innerHTML = resultaat3;
// Aparte var omdat we een numerieke waarde willen
var numResultaat = (resultaat1 + resultaat2 + resultaat3) / 3;
var eindResultaat = numResultaat.toFixed(1);
document.getElementById("eindresultaat").innerHTML = eindResultaat;
// Dit is dus nieuw
stelKleurIn("res1", resultaat1);
stelKleurIn("res2", resultaat2);
stelKleurIn("res3", resultaat3);
stelKleurIn("eindresultaat", numResultaat);
}
// Deze functie regelt het instellen van de kleur classes
function stelKleurIn(element, cijfer) {
if (cijfer < 5.5) {
document.getElementById(element).classList.add('rood');
document.getElementById(element).classList.remove('groen');
} else {
document.getElementById(element).classList.add('groen');
document.getElementById(element).classList.remove('rood');
}
}
var resultaat1 = parseInt(document.getElementById("eersteTentamen").value);
var resultaat2 = parseInt(document.getElementById("tweedeTentamen").value);
var resultaat3 = parseInt(document.getElementById("derdeTentamen").value);
document.getElementById("res1").innerHTML = resultaat1;
document.getElementById("res2").innerHTML = resultaat2;
document.getElementById("res3").innerHTML = resultaat3;
// Aparte var omdat we een numerieke waarde willen
var numResultaat = (resultaat1 + resultaat2 + resultaat3) / 3;
var eindResultaat = numResultaat.toFixed(1);
document.getElementById("eindresultaat").innerHTML = eindResultaat;
// Dit is dus nieuw
stelKleurIn("res1", resultaat1);
stelKleurIn("res2", resultaat2);
stelKleurIn("res3", resultaat3);
stelKleurIn("eindresultaat", numResultaat);
}
// Deze functie regelt het instellen van de kleur classes
function stelKleurIn(element, cijfer) {
if (cijfer < 5.5) {
document.getElementById(element).classList.add('rood');
document.getElementById(element).classList.remove('groen');
} else {
document.getElementById(element).classList.add('groen');
document.getElementById(element).classList.remove('rood');
}
}
Edit: Ik vind de ternary oplossing van Ad Fundum ook wel netjes, zoals je ziet zijn er meerdere wegen die naar Rome leiden.
Dankje, jouw voorbeeld is het bestuderen even waard. Ad Fundum zijn voorbeeld is wat makkelijker maar moet je maar net op die ternary komen. En ik ben het met je eens, ook wat netter.



