diff --git a/html/quiz.js b/html/quiz.js index f4ee2f0..803181e 100644 --- a/html/quiz.js +++ b/html/quiz.js @@ -1,35 +1,106 @@ -document.addEventListener("DOMContentLoaded", function(){ +// document.addEventListener("DOMContentLoaded", function(){ +// let questions = []; +// let form = document.getElementById("quizform"); +// let result = document.getElementById("result"); + +// fetch("question.csv") +// .then(Response => Response.text()) +// .then(data => +// let lines = data.trim().split("\n"); +// let headers = lines[0].split(","); +// for (let i = 1; i < lines.length; i++) { +// let cols = lines[i].split(","); +// questions.push({ +// question: cols[0], +// options: [cols[1],cols[2],cols[3]], +// answer:parseInt(cols[4], 10) +// }); +// } +// renderQuestions(); +// }); + +// function renderQuestions(){ +// questions.forEach((q, index)=> { +// let div = document.createElement("div"); +// div.className = "question"; +// let qText = document.createElement("p"); +// qText.textContent = (index +1) + "." + q.question; +// div.appendChild(qText); + +// q.options.forEach((opt, i)=> { +// let label = document.createElement("label"); +// let radio = document.createElement("input"); +// }) +// }) +// } + + + document.addEventListener("DOMContentLoaded", function () { let questions = []; let form = document.getElementById("quizform"); let result = document.getElementById("result"); fetch("question.csv") - .then(Response => Response.text()) - .then(data => - let lines = data.trim().split("\n"); - let headers = lines[0].split(","); - for (let i = 1; i < lines.length; i++) { - let cols = lines[i].split(","); - questions.push({ - question: cols[0], - options: [cols[1],cols[2],cols[3]], - answer:parseInt(cols[4], 10) - }); - } - renderQuestions(); - }); + .then(response => response.text()) + .then(data => { + let lines = data.trim().split("\n"); + let headers = lines[0].split(","); + for (let i = 1; i < lines.length; i++) { + let cols = lines[i].split(","); + questions.push({ + question: cols[0], + options: [cols[1], cols[2], cols[3]], + answer: parseInt(cols[4], 10) + }); + } + renderQuestions(); + }); - function renderQuestions(){ - questions.forEach((q, index)=> { + function renderQuestions() { + questions.forEach((q, index) => { let div = document.createElement("div"); div.className = "question"; + let qText = document.createElement("p"); - qText.textContent = (index +1) + "." + q.question; + qText.textContent = (index + 1) + ". " + q.question; div.appendChild(qText); - q.options.forEach((opt, i)=> { + q.options.forEach((opt, i) => { let label = document.createElement("label"); let radio = document.createElement("input"); - }) - }) + radio.type = "radio"; + radio.name = "question" + index; // 各問題ごとにグループ化 + radio.value = i; + + label.appendChild(radio); + label.appendChild(document.createTextNode(opt)); + div.appendChild(label); + div.appendChild(document.createElement("br")); + }); + + form.appendChild(div); + }); + + // 最後に送信ボタンを追加 + let submitBtn = document.createElement("button"); + submitBtn.type = "submit"; + submitBtn.textContent = "回答する"; + form.appendChild(submitBtn); + + form.addEventListener("submit", function (e) { + e.preventDefault(); + checkAnswers(); + }); } + + function checkAnswers() { + let score = 0; + questions.forEach((q, index) => { + let selected = document.querySelector(`input[name="question${index}"]:checked`); + if (selected && parseInt(selected.value, 10) === q.answer) { + score++; + } + }); + result.textContent = "あなたの得点: " + score + "/" + questions.length; + } +}); \ No newline at end of file