Vaccines Pharmacology MCQs
Vaccines pharmacology Quiz
Vaccines pharmacology MCQs
Question 1 of 3
0%
Current Question
Vaccines pharmacology Quiz Complete!
0/3
Your Performance
📋 Answer Review
See all questions with correct answers
${letters[index]}
${opt}
`;
div.onclick = () => selectOption(index, div);
container.appendChild(div);
});
}
function selectOption(index, el) {
document.querySelectorAll(".option").forEach(o => o.classList.remove("selected"));
el.classList.add("selected");
selectedOption = index;
document.getElementById("nextBtn").disabled = false;
document.getElementById("btnText").textContent = "Continue";
}
/* =========================
NEXT BUTTON
========================= */
document.getElementById("nextBtn").onclick = () => {
if (selectedOption === null) return;
const q = quizData[currentQuestion];
// Save user's answer
userAnswers.push({
questionIndex: currentQuestion,
userAnswer: selectedOption,
correctAnswer: q.correct,
isCorrect: selectedOption === q.correct
});
// Update score
if (selectedOption === q.correct) {
score++;
}
// Move to next question or finish
currentQuestion++;
if (currentQuestion < quizData.length) {
loadQuestion();
} else {
submitQuiz();
}
};
/* =========================
SUBMIT QUIZ
========================= */
async function submitQuiz() {
const payload = {
quiz_id: QUIZ_ID,
fingerprint: getUserId(),
score: score,
total_questions: quizData.length
};
try {
const res = await fetch(`${API_BASE_URL}/api/quiz/submit`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(payload)
});
const data = await res.json();
showResults(data.rank_percentile);
} catch (err) {
console.error("Submit error:", err);
const fallback = Math.round((score / quizData.length) * 100);
showResults(fallback);
}
}
/* =========================
SHOW RESULTS
========================= */
function showResults(beatPercentile) {
document.getElementById("quizSection").classList.add("hidden");
document.getElementById("resultsSection").classList.remove("hidden");
// Update score
document.getElementById("scoreDisplay").textContent =
`${score}/${quizData.length}`;
// Determine icon and messages
let icon = "🎯";
let message = "";
let ctaMessage = "";
if (beatPercentile >= 95) {
icon = "🏆";
message = "🎉 You are in the TOP 5% of users!";
ctaMessage = "Incredible! You're crushing it! Share your achievement and challenge others to beat your score!";
}
else if (beatPercentile >= 75) {
icon = "⭐";
message = `Excellent! You beat ${Math.round(beatPercentile)}% of users!`;
ctaMessage = "You're doing great! Take more quizzes to reach the top 5% and become a Quiz Master!";
}
else if (beatPercentile >= 50) {
icon = "💪";
message = `Good job! You beat ${Math.round(beatPercentile)}% of users!`;
ctaMessage = "You're above average! Keep practicing to climb higher on the leaderboard!";
}
else if (beatPercentile > 10) {
icon = "📈";
message = `You scored better than ${Math.round(beatPercentile)}% of users`;
ctaMessage = "Keep going! Every quiz makes you better. Practice more to improve your ranking!";
}
else {
icon = "⚠️";
message = "You are in the BOTTOM 10% of users";
ctaMessage = "Don't give up! Everyone starts somewhere. Take more quizzes to learn and improve!";
}
document.getElementById("resultsIcon").textContent = icon;
document.getElementById("percentileDisplay").textContent = message;
document.getElementById("ctaMessage").textContent = ctaMessage;
// Show answer review
showReview();
}
/* =========================
SHOW REVIEW
========================= */
function showReview() {
const reviewContainer = document.getElementById("reviewContainer");
const letters = ['A', 'B', 'C', 'D'];
reviewContainer.innerHTML = '';
quizData.forEach((question, qIndex) => {
const userAnswer = userAnswers[qIndex];
const isCorrect = userAnswer.isCorrect;
const questionCard = document.createElement('div');
questionCard.className = 'review-question-card';
let optionsHTML = '';
question.options.forEach((option, optIndex) => {
const isUserSelected = userAnswer.userAnswer === optIndex;
const isCorrectAnswer = question.correct === optIndex;
let optionClass = 'review-option';
let icon = '';
if (isCorrectAnswer) {
optionClass += ' is-correct';
icon = '✓';
}
if (isUserSelected && !isCorrect) {
optionClass += ' user-wrong';
icon = '✗';
}
if (isUserSelected && isCorrect) {
optionClass += ' user-selected';
}
optionsHTML += `
${letters[optIndex]}
${option}
${icon ? `` : ''}
${qIndex + 1}
${question.question}
${isCorrect ? '✓ Correct' : '✗ Wrong'}