let currentQuestionnaire = null; function formatDate(timestamp) { if (!timestamp) return '-'; const date = new Date(timestamp); return `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}`; } function renderQuestion(question, index) { const questionHtml = `
${index + 1}. ${question.title} ${question.required ? '*' : ''}
${ question.type === 'text' ? `
` : `
${question.options.map(option => `
`).join('')}
` }
此题为必答题
`; return questionHtml; } function loadQuestionnaire() { const urlParams = new URLSearchParams(window.location.search); const questionnaireId = urlParams.get('id'); if (!questionnaireId) { alert('问卷ID不存在!'); window.location.href = 'myQuestion.html'; return; } const questionnaireList = JSON.parse(localStorage.getItem('questionnaireList') || '[]'); const questionnaire = questionnaireList.find(q => q.id === questionnaireId); if (!questionnaire) { alert('问卷不存在!'); window.location.href = 'myQuestion.html'; return; } if (questionnaire.status !== '已发布') { alert('该问卷尚未发布!'); window.location.href = 'myQuestion.html'; return; } currentQuestionnaire = questionnaire; // 填充问卷信息 document.querySelector('.question-title').textContent = questionnaire.title; document.querySelector('.end-time').textContent = formatDate(questionnaire.data.endTime); document.querySelector('.status').textContent = questionnaire.status; // 渲染问题列表 const questionListHtml = questionnaire.data.questions .map((question, index) => renderQuestion(question, index)) .join(''); document.querySelector('.question-list').innerHTML = questionListHtml; } function validateAnswers() { let isValid = true; currentQuestionnaire.data.questions.forEach(question => { if (!question.required) return; const errorElement = document.getElementById(`error_${question.id}`); if (question.type === 'text') { const answer = document.querySelector(`textarea[name="question_${question.id}"]`).value.trim(); if (!answer) { errorElement.style.display = 'block'; isValid = false; } else { errorElement.style.display = 'none'; } } else { const checked = document.querySelector(`input[name="question_${question.id}"]:checked`); if (!checked) { errorElement.style.display = 'block'; isValid = false; } else { errorElement.style.display = 'none'; } } }); return isValid; } function submitQuestionnaire() { if (!validateAnswers()) { alert('请回答所有问题!'); return; } const answers = { questionnaireId: currentQuestionnaire.id, submitTime: new Date().getTime(), answers: currentQuestionnaire.data.questions.map(question => { if (question.type === 'text') { return { questionId: question.id, type: question.type, answer: document.querySelector(`textarea[name="question_${question.id}"]`).value.trim() }; } else { const selectedOptions = Array.from( document.querySelectorAll(`input[name="question_${question.id}"]:checked`) ).map(input => parseInt(input.value)); return { questionId: question.id, type: question.type, answer: selectedOptions }; } }) }; // 保存答案到 localStorage let answersList = JSON.parse(localStorage.getItem('questionnaireAnswers') || '[]'); answersList.push(answers); localStorage.setItem('questionnaireAnswers', JSON.stringify(answersList)); alert('问卷提交成功!'); window.location.href = 'myQuestion.html'; } window.onload = loadQuestionnaire;