
GUIDE PER ASPIRANTI PROGRAMMATORI
Fase 2: carichiamo le domande e creiamo il quiz!
Per procedere con il quiz dobbiamo passare al riflettere sul caricamento delle domande: queste saranno caricate dinamicamente da un file JSON. La struttura di questo file JSON è la seguente e la integreremo direttamente nel codice JavaScript. Se necessario, è possibile caricare queste domande in modo asincrono da un backend collegato ad un database così…


Vuoi avviare una nuova carriera o fare un upgrade?
Trova il corso Digital & Tech più adatto a te nel nostro catalogo!
Per procedere con il quiz dobbiamo passare al riflettere sul caricamento delle domande: queste saranno caricate dinamicamente da un file JSON. La struttura di questo file JSON è la seguente e la integreremo direttamente nel codice JavaScript. Se necessario, è possibile caricare queste domande in modo asincrono da un backend collegato ad un database così da creare più combinazioni di domande e risposte sempre mantenendo la stessa struttura.
[ { "question": "Qual è la capitale della Francia?", "choices": ["Parigi", "Londra", "Berlino", "Roma"], "correctAnswer": 0 }, { "question": "Qual è la formula chimica dell'acqua?", "choices": ["H2O", "O2", "CO2", "NaCl"], "correctAnswer": 0 }, { "question": "Qual è il pianeta più vicino al sole?", "choices": ["Venere", "Terra", "Mercurio", "Marte"], "correctAnswer": 2 } ]
A questo punto implementiamo il codice JavaScript per caricare le domande dal JSON e visualizzarle nella pagina. Implementeremo, poi, anche la logica per calcolare i punteggi e visualizzare il risultato finale.
document.addEventListener('DOMContentLoaded', function() { const quizContainer = document.getElementById('quiz-container'); const resultContainer = document.getElementById('result'); // Caricamento delle domande dal JSON const questions = [ { "question": "Qual è la capitale della Francia?", "choices": ["Parigi", "Londra", "Berlino", "Roma"], "correctAnswer": 0 }, { "question": "Qual è la formula chimica dell'acqua?", "choices": ["H2O", "O2", "CO2", "NaCl"], "correctAnswer": 0 }, { "question": "Qual è il pianeta più vicino al sole?", "choices": ["Venere", "Terra", "Mercurio", "Marte"], "correctAnswer": 2 } ]; // Funzione per creare le domande del quiz function createQuiz() { questions.forEach((question, index) => { const section = document.createElement('div'); section.className = 'section'; const title = document.createElement('h2'); title.textContent = `Domanda ${index + 1}: ${question.question}`; section.appendChild(title); question.choices.forEach((choice, choiceIndex) => { const label = document.createElement('label'); const input = document.createElement('input'); input.type = 'radio'; input.name = `question${index}`; input.value = choiceIndex; label.appendChild(input); label.appendChild(document.createTextNode(choice)); section.appendChild(label); section.appendChild(document.createElement('br')); }); quizContainer.appendChild(section); }); const submitButton = document.createElement('button'); submitButton.className = 'button'; submitButton.textContent = 'Invia'; submitButton.addEventListener('click', calculateResults); quizContainer.appendChild(submitButton); } // Funzione per calcolare i risultati del quiz function calculateResults() { let score = 0; questions.forEach((question, index) => { const selectedOption = document.querySelector(`input[name="question${index}"]:checked`); if (selectedOption && parseInt(selectedOption.value) === question.correctAnswer) { score++; } }); displayResults(score); } // Funzione per visualizzare i risultati function displayResults(score) { quizContainer.style.display = 'none'; const totalQuestions = questions.length; resultContainer.textContent = `Hai risposto correttamente a ${score} su ${totalQuestions} domande.`; resultContainer.style.display = 'block'; if (score === totalQuestions) { document.body.style.backgroundColor = 'lightgreen'; } else { document.body.style.backgroundColor = 'lightcoral'; } const resetButton = document.createElement('button'); resetButton.className = 'button'; resetButton.textContent = 'Ricomincia'; resetButton.addEventListener('click', resetQuiz); resultContainer.appendChild(resetButton); } // Funzione per resettare il quiz function resetQuiz() { quizContainer.style.display = 'block'; resultContainer.style.display = 'none'; document.body.style.backgroundColor = ''; const selectedOptions = document.querySelectorAll('input[type="radio"]:checked'); selectedOptions.forEach(option => { option.checked = false; }); resultContainer.innerHTML = ''; } // Creazione del quiz all'avvio createQuiz(); });
A questo punto, il tuo quiz è pronto! Sei disorientato? Non preoccuparti, nell’articolo a seguire analizzeremo nel dettaglio tutto ciò che è stato fatto.
CONTENUTI GRATUITI IN EVIDENZA
Guide per aspiranti programmatori 👨🏻🚀
Vuoi muovere i primi passi nel Digital e Tech? Abbiamo preparato alcune guide per aiutarti a orientarti negli ambiti più richiesti oggi.