Din mission
Denne gang er der ikke nyt materiale. Du får en liste over opgaver, og du ved allerede alt, hvad du skal bruge til dem. Præcis sådan ser en rigtig udviklers arbejde ud: du får et sæt krav og samler dem af ting, du allerede kender.
Påkrævet del 🎯
Gå igennem din hjemmeside og sørg for, at alle fem trylleformularer fra dette niveau er i live på den:
- Scriptet forbundet på hver side og ingen fejl i konsollen (F12 – intet rødt bør vises).
- Mørk tilstand – en kontakt i headeren på hver side, og valget huskes.
- En interaktiv knap eller tæller – mindst én trylleformular med en variabel og en betingelse.
- Et fotogalleri med lightbox – et klik gør et foto større.
- En quiz eller en formular med validering – mindst én af disse. Du må gerne lave begge!
Valgfrie udvidelser 🌟
Vælg mindst én (eller find på din egen):
Hilsen baseret på tid på dagen
Hjemmesiden hilser forskelligt om morgenen og om aftenen:
<p id="day-greeting"></p>
const dayGreeting = document.getElementById("day-greeting");
const hour = new Date().getHours();
if (hour < 9) {
dayGreeting.textContent = "Good morning! ☀️";
} else if (hour < 18) {
dayGreeting.textContent = "Hi there, have a nice day!";
} else {
dayGreeting.textContent = "Good evening! 🌙";
}
new Date() returnerer den aktuelle dato og tid, .getHours() henter timen ud af den.
Tilfældig besked ved klik
En anden joke, turidé eller holdsang hver gang:
const messages = [
"Practice makes perfect!",
"Let's go, Eagles! 🦅",
"You miss every shot you don't take.",
"Fans are the twelfth player.",
];
const messageButton = document.getElementById("message-button");
const messageEl = document.getElementById("message");
messageButton.addEventListener("click", () => {
const random = Math.floor(Math.random() * messages.length);
messageEl.textContent = messages[random];
});
Math.random() returnerer et tilfældigt tal mellem 0 og 1, og resten af linjen gør det til en tilfældig position i arrayet.
Besøgstæller (kun til dig)
Hvor mange gange har du åbnet din hjemmeside? Gem det i localStorage:
let visits = Number(localStorage.getItem("visits") ?? 0);
visits++;
localStorage.setItem("visits", visits);
console.log("You've opened this page " + visits + " times now");
Number(...) konverterer tekst fra hukommelsen til et tal, og ?? 0 betyder “hvis der ikke er noget, start fra nul.”
Sammenklappelig sektion (accordion)
Skjul en lang menu eller trup under en klikbar overskrift:
const sectionHeading = document.getElementById("expand-heading");
const sectionContent = document.getElementById("expand-content");
sectionHeading.addEventListener("click", () => {
sectionContent.classList.toggle("hidden");
});
Du har allerede .hidden { display: none !important; }-klassen fra gallerilektionen.
Upload den nye version til internettet
Din hjemmeside på GitHub Pages er stadig den gamle version fra niveau 1! Upload den nye:
- Åbn dit repository på github.com,
- Add file → Upload files,
- træk de ændrede filer ind (især
script.js,style.cssog alle.html-filerne) og klik på Commit changes.
Inden for et minut kører dine trylleformularer for alle at se.
Tillykke, Troldmand! 🪄 Din hjemmeside er ikke bare pæn længere – den er levende. Den reagerer på klik, husker valg, stiller spørgsmål og svarer på dem. Og du ved, hvordan hver eneste linje virker. I Niveau 3 – Mester lærer du at bygge hjemmesider som professionelle: React, komponenter og din egen server.
Det tager du med fra dette niveau
- JavaScript: variabler, betingelser, funktioner, arrays, objekter, løkker – fundamentet for al programmering.
- Trylleformularformlen: find et element → lyt efter en hændelse → tag handling.
localStoragetil at huske ting,querySelectorAll+forEachtil grupper af elementer, tjek af formularinput.
© 2026 Ing. Martin Polak / AlgoRhino · Vilkår for indholdsbrug