← Level 2 – Zauberer

Lektion 8 von 8 ⏱ 60 Minuten

Große Herausforderung: Erweck deine ganze Website zum Leben

Die finale Mission von Level 2. Alle Zauber auf einmal – plus ein paar neue Ideen obendrauf.

Deine Mission

Diesmal gibt es kein neues Material. Du bekommst eine Liste von Aufgaben, und für alle weißt du schon alles Nötige. Genau so sieht die Arbeit eines echten Entwicklers aus: Du bekommst Anforderungen und setzt sie aus Dingen zusammen, die du schon kennst.

Pflichtteil 🎯

Geh durch deine Website und stell sicher, dass alle fünf Zauber aus diesem Level auf ihr lebendig sind:

  1. Das Skript ist auf jeder Seite eingebunden und es gibt keine Fehler in der Konsole (F12 – nichts Rotes sollte erscheinen).
  2. Dunkelmodus – ein Schalter im Header auf jeder Seite, und die Wahl wird gemerkt.
  3. Ein interaktiver Button oder Zähler – mindestens ein Zauber mit einer Variable und einer Bedingung.
  4. Eine Fotogalerie mit Lightbox – ein Klick macht ein Foto größer.
  5. Ein Quiz oder ein Formular mit Validierung – mindestens eines davon. Mach ruhig beides!

Optionale Erweiterungen 🌟

Wähl mindestens eine (oder erfinde deine eigene):

Begrüßung je nach Tageszeit

Die Website begrüßt morgens anders als abends:

<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() gibt das aktuelle Datum und die Uhrzeit zurück, .getHours() holt die Stunde daraus.

Zufällige Nachricht beim Klick

Jedes Mal ein anderer Witz, Reiseidee oder Team-Gesang:

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() gibt eine Zufallszahl zwischen 0 und 1 zurück, und der Rest der Zeile macht daraus eine zufällige Position im Array.

Besuchszähler (nur für dich)

Wie oft hast du deine Website geöffnet? Speichere es in localStorage:

let visits = Number(localStorage.getItem("visits") ?? 0);
visits++;
localStorage.setItem("visits", visits);
console.log("You've opened this page " + visits + " times now");

Number(...) wandelt Text aus dem Speicher in eine Zahl um, und ?? 0 bedeutet „wenn nichts da ist, starte bei null.”

Ausklappbarer Bereich (Akkordeon)

Verstecke ein langes Menü oder eine Liste unter einer klickbaren Überschrift:

const sectionHeading = document.getElementById("expand-heading");
const sectionContent = document.getElementById("expand-content");

sectionHeading.addEventListener("click", () => {
  sectionContent.classList.toggle("hidden");
});

Die Klasse .hidden { display: none !important; } hast du schon aus der Galerie-Lektion.

Lade die neue Version ins Internet hoch

Deine Website auf GitHub Pages ist noch die alte Version aus Level 1! Lade die neue hoch:

  1. Öffne dein Repository auf github.com,
  2. Add file → Upload files,
  3. zieh die geänderten Dateien rein (hauptsächlich script.js, style.css und alle .html-Dateien) und klick Commit changes.

In einer Minute laufen deine Zauber für alle sichtbar.

Glückwunsch, Zauberer! 🪄 Deine Website ist nicht mehr nur hübsch – sie ist lebendig. Sie reagiert auf Klicks, merkt sich Entscheidungen, stellt Fragen und beantwortet sie. Und du weißt, wie jede einzelne Zeile funktioniert. In Level 3 – Meister lernst du, Websites wie die Profis zu bauen: React, Komponenten und dein eigener Server.

Das nimmst du aus dieser Lektion mit

🏆 Dein Diplom

Finale von Zauberer

Wenn du jede Lektion abgehakt hast, kannst du ein Zertifikat ausdrucken.