Sådan virker det
Du bygger en quiz: et spørgsmål, tre valg, klik for at svare, og pointene vises til sidst. Quizdataene (spørgsmål og svar) bor i et array af objekter – det lyder fancy, men du vil se, det bare er en pænt organiseret liste.
Vis mig: quizdataene
const questions = [
{
text: "How many legs does a spider have?",
choices: ["6", "8", "10"],
correct: 1,
},
{
text: "Which animal is the fastest?",
choices: ["cheetah", "falcon", "hare"],
correct: 1,
},
{
text: "What's the name of our website?",
choices: ["Code with Martin", "Code with Charlie", "Web with Wendy"],
correct: 0,
},
];
- Et array
[...]er en liste af værdier – du kender dette fra før (photosvar også et array). - Et objekt
{...}er en boks med navngivne rum:text,choices,correct. correct: 1betyder: valg nummer 1 er korrekt – tælling starter ved nul, så det er det andet i rækkefølgen.
Vis mig: quizmotoren
HTML:
<div class="card">
<h2 id="quiz-question"></h2>
<div id="quiz-choices"></div>
<p id="quiz-status"></p>
</div>
JavaScript:
const questionEl = document.getElementById("quiz-question");
const choicesEl = document.getElementById("quiz-choices");
const statusEl = document.getElementById("quiz-status");
let questionNumber = 0;
let points = 0;
function showQuestion() {
const question = questions[questionNumber];
questionEl.textContent = question.text;
choicesEl.innerHTML = ""; // clear the old buttons
question.choices.forEach((choice, index) => {
const button = document.createElement("button");
button.textContent = choice;
button.addEventListener("click", () => answer(index));
choicesEl.appendChild(button);
});
statusEl.textContent = "Question " + (questionNumber + 1) + " of " + questions.length;
}
function answer(index) {
if (index === questions[questionNumber].correct) {
points++;
}
questionNumber++;
if (questionNumber < questions.length) {
showQuestion();
} else {
questionEl.textContent = "Done! 🎉";
choicesEl.innerHTML = "";
statusEl.textContent = "You scored " + points + " out of " + questions.length + " points.";
}
}
showQuestion();
Nye ting:
document.createElement("button")– JavaScript kan ikke bare finde elementer, men også oprette dem. Vi opretter en knap for hvert valg.appendChild(...)– indsæt det oprettede element på siden.innerHTML = ""– tøm et elements indhold (vi rydder de gamle knapper før næste spørgsmål).- To funktioner giver arbejde til hinanden:
showQuestion()tegner,answer()evaluerer. At dele et program i små funktioner er en professionel vane.
Nu er det din tur 💪
Byg en quiz med dine egne spørgsmål – mindst fem. Projektidéer:
- 🏫 Quiz om vores skole – hvor gammel er skolen? Hvem er rektor? Hvor mange klasselokaler har vi?
- 🙋 Hvor godt kender du mig? – min yndlingsmad? Hvor gammel er jeg? Hvad hedder min hund?
- 🌍 Rejsequiz – hovedstad i Kroatien? Højeste bjerg i dit land? Hvilken retning er havet?
- ⚽ Hvor godt kender du vores hold? – hvem er kaptajn? Hvor mange mål scorede Tom? Hvad er klubfarverne?
Byt bare indholdet i questions-arrayet – quizmotoren forbliver den samme. Det er præcis derfor data og logik holdes adskilt!
Bonus: farvet feedback på svar
Vil du have det rigtige svar til at blinke grønt? Juster answer, så den farver knapperne først, og viser så det næste spørgsmål efter et sekund:
function answer(index) {
const buttons = choicesEl.querySelectorAll("button");
const correct = questions[questionNumber].correct;
buttons[correct].style.backgroundColor = "#16a34a";
if (index !== correct) {
buttons[index].style.backgroundColor = "#dc2626";
} else {
points++;
}
setTimeout(() => {
questionNumber++;
if (questionNumber < questions.length) {
showQuestion();
} else {
questionEl.textContent = "Done! 🎉";
choicesEl.innerHTML = "";
statusEl.textContent = "You scored " + points + " out of " + questions.length + " points.";
}
}, 1000);
}
setTimeout(() => {...}, 1000) betyder “kør dette efter 1000 millisekunder.” Og style.backgroundColor ændrer CSS direkte fra JavaScript.
Tjek dig selv: Quizen stiller spørgsmål én efter én, holder styr på point og viser resultatet til sidst. Du har lige skrevet din første rigtige applikation – den har data, logik og en brugergrænseflade.
Det tager du med fra denne lektion
- Hold data (et array af objekter) adskilt fra logik (funktioner) – så er det bare at bytte spørgsmålene for at få en ny quiz.
- JavaScript kan oprette elementer:
createElement+appendChild. setTimeoutkører kode efter en forsinkelse.
© 2026 Ing. Martin Polak / AlgoRhino · Vilkår for indholdsbrug