La tua missione
Questa volta non c’è materiale nuovo. Riceverai una lista di compiti, e sai già tutto quello che serve. È esattamente il lavoro di uno sviluppatore vero: ti danno requisiti e li assembli con cose che già conosci.
Parte obbligatoria 🎯
Scorri il sito web e assicurati che tutti e cinque gli incantesimi di questo livello siano attivi:
- Lo script collegato su ogni pagina e nessun errore nella console (F12 – niente di rosso).
- Modalità scura – un interruttore nell’header su ogni pagina, e la scelta viene ricordata.
- Un pulsante o contatore interattivo – almeno un incantesimo con variabile e condizione.
- Una galleria fotografica con lightbox – cliccare ingrandisce una foto.
- Un quiz o un form con validazione – almeno uno dei due. Fai pure entrambi!
Estensioni opzionali 🌟
Scegline almeno una (oppure inventane una tua):
Saluto in base all'ora del giorno
Il sito web saluta diversamente al mattino e alla sera:
<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() restituisce data e ora attuali, .getHours() ne estrae l’ora.
Messaggio casuale al clic
Una barzelletta, idea viaggio o coro della squadra diversi ogni volta:
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() restituisce un numero casuale tra 0 e 1, e il resto della riga lo trasforma in una posizione casuale nell’array.
Contatore visite (solo per te)
Quante volte hai aperto il sito web? Salvalo 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(...) converte il testo dalla memoria in numero, e ?? 0 significa “se non c’è niente, parti da zero.”
Sezione pieghevole (accordion)
Nascondi un menu lungo o una rosa sotto un titolo cliccabile:
const sectionHeading = document.getElementById("expand-heading");
const sectionContent = document.getElementById("expand-content");
sectionHeading.addEventListener("click", () => {
sectionContent.classList.toggle("hidden");
});
Hai già la classe .hidden { display: none !important; } dalla lezione galleria.
Carica la nuova versione su internet
Il sito web su GitHub Pages è ancora la vecchia versione del Livello 1! Carica quella nuova:
- Apri il repository su github.com,
- Add file → Upload files,
- trascina i file modificati (soprattutto
script.js,style.csse tutti i file.html) e clicca Commit changes.
Entro un minuto, i tuoi incantesimi gireranno per tutti.
Congratulazioni, Mago! 🪄 Il tuo sito web non è più solo bello – è vivo. Reagisce ai clic, ricorda le scelte, fa domande e risponde. E sai come funziona ogni singola riga. Al Livello 3 – Maestro imparerai a costruire siti web come i professionisti: React, componenti e il tuo server.
Cosa porti via da questo livello
- JavaScript: variabili, condizioni, funzioni, array, oggetti, cicli – le basi di tutta la programmazione.
- La formula dell’incantesimo: trova un elemento → ascolta un evento → agisci.
localStorageper ricordare,querySelectorAll+forEachper gruppi di elementi, controllo input dei form.
© 2026 Ing. Martin Polak / AlgoRhino · Condizioni d'uso dei contenuti