← Nivå 2 – Trollmann

Leksjon 8 av 8 ⏱ 60 minutter

Stor udfordring: bring hele din nettside til live

Den endelige mission i nivå 2. Alle trylleformularer på én gang – plus et par nye idéer oveni.

Din mission

Denne gang er der ikke nyt materiale. Du får en liste over opgaver, og du ved allerede alt, hva du skal bruke til dem. Nøyaktig sådan ser en ekte udviklers arbejde ud: du får et sett krav og samler dem af ting, du allerede kender.

Påkrævet del 🎯

Gå igjennom din nettside og sørg for, at alle fem trylleformularer fra dette nivå er i live på den:

  1. Scriptet forbundet på hver side og ingen feil i konsollen (F12 – intet rødt bør vises).
  2. Mørk tilstand – en kontakt i headeren på hver side, og valget huskes.
  3. En interaktiv knap eller tæller – mindst én trylleformular med en variabel og en betingelse.
  4. Et bildegalleri med lightbox – et klikk gjør et bilde større.
  5. En quiz eller en formular med validering – mindst én af disse. Du må gerne lave begge!

Valgfrie udvidelser 🌟

Velg mindst én (eller finn på din egen):

Hilsen baseret på tid på dagen

Nettsiden 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ældeg melding 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 mellom 0 og 1, og resten af linjen gjør det til en tilfældeg position i arrayet.

Besøgstæller (kun til dig)

Hvor mange gange har du åpnet din nettside? Lagre 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 minnen til et tal, og ?? 0 betyder “hvis der ikke er noe, 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 gallerileksjonen.

Upload den nye version til internettet

Din nettside på GitHub Pages er fortsatt den gamle version fra nivå 1! Upload den nye:

  1. Åpne ditt repository på github.com,
  2. Add file → Upload files,
  3. dra de endret filer ind (især script.js, style.css og alle .html-filerne) og klikk på Commit changes.

Innen et minut kjører dine trylleformularer for alle at se.

Gratulerer, Troldmand! 🪄 Din nettside 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 fungerer. I Nivå 3 – Mester lærer du at bygge nettsider som profesjonelle: React, komponenter og din egen server.

Dette tar du med deg fra nivået

🏆 Diplomet ditt

Finale av Trollmann

Når du har krysset av alle leksjoner, kan du skrive ut et sertifikat.