Math Quiz Generator
Create a custom quiz to test your math skills.
Quiz Settings
Quiz Results
${index + 1}. ${q.question}
${optionsHTML}`; quizForm.appendChild(questionEl); }); }; const renderResults = (score) => { scoreSummary.textContent = `You scored ${score} out of ${currentQuiz.length}!`; resultsDetails.innerHTML = ''; currentQuiz.forEach((q, index) => { const isCorrect = q.userAnswer == q.answer; const resultEl = document.createElement('div'); resultEl.className = `p-4 rounded-lg border ${isCorrect ? 'correct-answer' : 'incorrect-answer'}`; resultEl.innerHTML = `${index + 1}. ${q.question}
Your answer: ${q.userAnswer ?? 'Not answered'}
${isCorrect ? 'Correct!' : `Correct answer: ${q.answer}`}
`; resultsDetails.appendChild(resultEl); }); }; // --- EVENT LISTENERS --- submitBtn.addEventListener('click', () => { let score = 0; currentQuiz.forEach((q, index) => { const selected = document.querySelector(`input[name="question-${index}"]:checked`); q.userAnswer = selected ? selected.value : undefined; if (q.userAnswer == q.answer) { score++; } }); renderResults(score); showView('results'); }); retakeBtn.addEventListener('click', () => showView('setup')); // --- PDF DOWNLOAD --- downloadPdfBtn.addEventListener('click', () => { const { jsPDF } = window.jspdf; const doc = new jsPDF(); const score = currentQuiz.filter(q => q.userAnswer == q.answer).length; const total = currentQuiz.length; doc.setFontSize(22); doc.text('Math Quiz Results', 105, 20, { align: 'center' }); doc.setFontSize(14); doc.text(`Final Score: ${score} / ${total}`, 105, 28, { align: 'center' }); const tableData = currentQuiz.map((q, i) => [ i + 1, q.question, q.userAnswer ?? 'N/A', q.answer, q.userAnswer == q.answer ? 'Correct' : 'Incorrect' ]); doc.autoTable({ head: [['#', 'Question', 'Your Answer', 'Correct Answer', 'Result']], body: tableData, startY: 40, theme: 'grid' }); doc.save('math-quiz-results.pdf'); }); });