Passa al contenuto principale

Random Background Color Changer

Anteprima Random Background Color Changer Project - Esempio 1 Anteprima Random Background Color Changer Project - Esempio 2

Il Progetto

Applicazione web per cambiare casualmente il colore di sfondo, sviluppata come esercizio di debugging. Un progetto che mi ha fatto sentire più sicuro delle competenze JavaScript acquisite.

Codice Sorgente

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Build a random background color changer</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<h1>Random Background Color changer</h1>

<main>
<section class="bg-information-container">
<p>Hex Code: <span id="bg-hex-code">#110815</span></p>
</section>

<button class="btn" id="btn">Change Background Color</button>
</main>
<script src="./script.js"></script>
</body>
</html>

L’esperienza di Debugging

C’è poco da dire: è stato un progetto molto breve che ho adorato fare.

Non so se fosse stato progettato apposta per essere così semplice o se l’ho trovato semplice io, fatto sta che per la maggior parte del tempo leggevo le istruzioni dopo aver già risolto i bug.

Detto questo, ha rafforzato ancora una volta i concetti di JavaScript che ho imparato finora, ed è questo ciò che conta! 💪

I Bug Risolti

Ho individuato e corretto 6 errori principali nel codice di CamperBot:

1. Errore di sintassi negli array:

// ❌ Bug: mancano le virgole
const darkColorsArr = [
"#2C3E50"
"#34495E" // SyntaxError
];

// ✅ Fix: virgole aggiunte
const darkColorsArr = [
"#2C3E50",
"#34495E",
];

2. Case sensitivity – oggetto Math:

// ❌ Bug: math invece di Math
const randomIndex = math.random(); // ReferenceError

// ✅ Fix: Math con la maiuscola
const randomIndex = Math.random();

3. Formula random invertita:

// ❌ Bug: ordine delle operazioni errato
Math.floor(darkColorsArr.length * math.random());

// ✅ Fix: ordine corretto
Math.floor(Math.random() * darkColorsArr.length);

4. Case sensitivity – querySelector:

// ❌ Bug: queryselector in minuscolo
document.queryselector("body"); // TypeError

// ✅ Fix: querySelector corretto
document.querySelector("body");

5. Selettore ID senza #:

// ❌ Bug: manca # per l’ID
document.querySelector("bg-hex-code"); // null

// ✅ Fix: # aggiunto
document.querySelector("#bg-hex-code");

6. Funzione non invocata:

// ❌ Bug: mancano le parentesi
const color = darkColorsArr[getRandomIndex]; // undefined

// ✅ Fix: parentesi aggiunte
const color = darkColorsArr[getRandomIndex()];

Cosa Ho Imparato

Competenze di Debugging:

  • Case sensitivity – JavaScript distingue tra maiuscole e minuscole
  • Sintassi precisa – virgole negli array, parentesi nelle chiamate
  • Selettori CSS# per gli ID, . per le classi
  • Debug con console.log per verificare i valori passo dopo passo

Rafforzamento dei concetti JavaScript:

  • Manipolazione degli array e accesso tramite indice
  • Oggetto Math e metodi random/floor
  • DOM manipulation con querySelector
  • Event handling con onclick
  • Chiamata di funzioni vs riferimento a funzioni

Riflessione

Questo progetto ha confermato che sto assimilando bene i fondamenti di JavaScript. Il fatto di aver risolto molti bug in modo intuitivo prima ancora di leggere le istruzioni mi dà molta fiducia nei miei progressi.

I bug più comuni (case sensitivity, errori di sintassi, selettori sbagliati) sono esattamente il tipo di problemi che ogni sviluppatore impara a riconoscere velocemente con l’esperienza.


Prossimo Progetto: Imparare la Form Validation costruendo un Calorie Counter