Online AI-Powered Reading Comprehension Trainer

AI Reading Comprehension Trainer

1. Input Text
2. Take Quiz
3. Review Results

Provide Your Text

${index + 1}. ${q.question}

Your Answer: ${userAnswer}

${!isCorrect ? `

Correct Answer: ${q.correctAnswer}

` : ''}
`; }); elements.resultsBreakdown.innerHTML = breakdownHtml; } function downloadPdf() { const { jsPDF } = window.jspdf; const doc = new jsPDF(); doc.setFont('helvetica', 'bold'); doc.setFontSize(18); doc.text('Reading Comprehension Report', doc.internal.pageSize.getWidth() / 2, 20, { align: 'center' }); doc.setFontSize(14); doc.text(`Final Score: ${elements.scoreDisplay.textContent}`, doc.internal.pageSize.getWidth() / 2, 28, { align: 'center' }); let currentY = 40; const margin = 14; const maxWidth = doc.internal.pageSize.getWidth() - margin * 2; doc.setFont('helvetica', 'bold'); doc.setFontSize(12); doc.text('Original Text:', margin, currentY); currentY += 7; doc.setFont('helvetica', 'normal'); doc.setFontSize(10); const originalLines = doc.splitTextToSize(sourceText, maxWidth); doc.text(originalLines, margin, currentY); currentY += (originalLines.length * 5) + 10; const tableBody = lastQuizData.questions.map((q, index) => { const isCorrect = userAnswers[index] === q.correctAnswer; return [ index + 1, q.question, userAnswers[index], isCorrect ? 'Correct' : 'Incorrect' ]; }); doc.autoTable({ startY: currentY, head: [['#', 'Question', 'Your Answer', 'Result']], body: tableBody, theme: 'grid', headStyles: { fillColor: [79, 70, 229] } }); doc.save('reading-comprehension-results.pdf'); } // --- Event Listeners --- elements.btnGenerate.addEventListener('click', generateQuiz); elements.btnSubmitQuiz.addEventListener('click', submitQuiz); elements.btnRestart.addEventListener('click', () => { goToStep(1); elements.sourceTextInput.value = ''; // Clear text for new session }); elements.btnDownloadPdf.addEventListener('click', downloadPdf); });
Scroll to Top