iT邦幫忙

2025 iThome 鐵人賽

DAY 28
0

提交答案後可以看到所有題目的對錯和正確答案。

<!-- quiz.html -->

    <script>
        // 顯示結果
        function displayResults(result) {
            // 隱藏提交按鈕,顯示總結區塊 ...

            // 標記結果和正確答案
            if (result.detailed_results) {
                result.detailed_results.forEach(item => {
                    const qIndex = item.question_index;
                    const isCorrect = item.is_correct;
                    const correctOption = item.correct_answer;

                    const questionCard = document.getElementById(`q-${qIndex}`);
                    if (!questionCard) return;

                    const resultFooter = questionCard.querySelector('.result-footer');
                    questionCard.classList.add(isCorrect ? 'correct' : 'incorrect');

                    // 標記選項顏色並禁用選項
                    const radioInputs = questionCard.querySelectorAll('input[type="radio"]');
                    radioInputs.forEach(radio => {
                        radio.disabled = true; // 禁用所有選項
                        const label = radio.nextElementSibling;
                        label.classList.remove('correct-option', 'user-incorrect-choice');

                        // 標記正確答案 (綠色)
                        if (radio.value === correctOption) {
                            label.classList.add('correct-option');
                        }

                        // 標記使用者選擇
                        if (radio.checked && !isCorrect) {
                            label.classList.add('user-incorrect-choice');
                        }
                    });

                    // 顯示標準答案
                    const summaryHtml = `
                        <div class="d-flex flex-wrap justify-content-between align-items-center">
                            <div class="text-sm text-dark">
                                <strong>標準答案:</strong> <span class="font-weight-bold text-success">${correctOption}</span>
                            </div>
                        </div>
                    `;
                    // 顯示 footer 
                    resultFooter.innerHTML = summaryHtml;
                    resultFooter.classList.remove('d-none');

                    // 更新導覽列狀態
                    updateNavigator(qIndex, true, true, isCorrect);
                });
            }
        }
    </script>
# views.py

@app.route('/submit_quiz', methods=['POST'])
def submit_quiz():
    ...
    quiz_results_for_report = []

    for index, question in enumerate(quiz_data, 1):
        q_key = f'question-{index}'
        user_answer = user_answers.get(q_key, None)
        is_correct = (user_answer == correct_answer)

        if is_correct:
            correct_count += 1
            total_score += SCORE_PER_QUESTION
        
        # 給前端顯示的數據
        quiz_results_for_report.append({
            "question_index": index,          
            "question_text": question.get('題目', 'N/A'),
            "is_correct": is_correct,
            "user_answer": user_answer,
            "correct_answer": correct_answer, # 必須傳回給前端
        })
            
    # 總結結果
    report_data = {
        ...
        "detailed_results": quiz_results_for_report
    }

    return jsonify({
        "success": True,
        "total_score": total_score,
        "correct_count": correct_count,
        "total_questions": total_questions,
        "score_per_question": SCORE_PER_QUESTION,
        "detailed_results": quiz_results_for_report, 
        "message": "測驗提交成功,結果已載入。"
    })

https://ithelp.ithome.com.tw/upload/images/20251012/201693707sjJcOd7Xj.png


上一篇
DAY27 - 服務層加入
下一篇
DAY29 - 歡迎頁面
系列文
打造你的數位圖書館:從雜亂檔案到個人化知識庫30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言