{"id":225,"date":"2025-08-27T14:45:05","date_gmt":"2025-08-27T06:45:05","guid":{"rendered":"http:\/\/43.139.99.192\/?p=225"},"modified":"2025-08-27T14:51:24","modified_gmt":"2025-08-27T06:51:24","slug":"%e7%ae%80%e6%98%93%e7%9a%84%e5%87%ba%e9%a2%98%e7%b3%bb%e7%bb%9f","status":"publish","type":"post","link":"http:\/\/43.139.99.192\/index.php\/2025\/08\/27\/%e7%ae%80%e6%98%93%e7%9a%84%e5%87%ba%e9%a2%98%e7%b3%bb%e7%bb%9f\/","title":{"rendered":"\u7b80\u6613\u7684\u51fa\u9898\u7cfb\u7edf"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/43.139.99.192\/wp-content\/uploads\/2025\/08\/image-1-1024x543.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"543\" data-original=\"http:\/\/43.139.99.192\/wp-content\/uploads\/2025\/08\/image-1-1024x543.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-227\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u662f\u4e00\u4e2a\u57fa\u4e8e\u7eaf\u524d\u7aef\u7684\u51fa\u9898\u7cfb\u7edf\uff0c\u652f\u6301\u9009\u62e9\u9898\u548c\u7b80\u7b54\u9898\u4e24\u79cd\u9898\u578b\u3002\u7cfb\u7edf\u5b8c\u5168\u5728\u6d4f\u89c8\u5668\u4e2d\u8fd0\u884c\uff0c\u65e0\u9700\u670d\u52a1\u5668\u652f\u6301\uff0c\u6240\u6709\u6570\u636e\u5904\u7406\u90fd\u5728\u672c\u5730\u5b8c\u6210\u3002\u4e3b\u8981\u529f\u80fd\u5305\u62ec\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4eceExcel\u6587\u4ef6\u5bfc\u5165\u9898\u76ee<\/li>\n\n\n\n<li>\u652f\u6301\u9009\u62e9\u9898\u548c\u7b80\u7b54\u9898\u4e24\u79cd\u9898\u578b<\/li>\n\n\n\n<li>\u9898\u76ee\u6d4f\u89c8\u4e0e\u7b54\u9898\u529f\u80fd<\/li>\n\n\n\n<li>\u7b54\u6848\u63d0\u4ea4\u4e0e\u4fdd\u5b58<\/li>\n\n\n\n<li>\u53c2\u8003\u7b54\u6848\u67e5\u770b<\/li>\n\n\n\n<li>\u5bfc\u51fa\u5e26\u7528\u6237\u7b54\u6848\u7684Excel\u6587\u4ef6<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!DOCTYPE html&gt;\n&lt;html lang=\"zh-CN\"&gt;\n&lt;head&gt;\n    &lt;meta charset=\"UTF-8\"&gt;\n    &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"&gt;\n    &lt;title&gt;\u51fa\u9898\u7cfb\u7edf&lt;\/title&gt;\n    &lt;link href=\"https:\/\/cdn.jsdelivr.net\/npm\/bootstrap@5.3.0\/dist\/css\/bootstrap.min.css\" rel=\"stylesheet\"&gt;\n    &lt;script src=\"https:\/\/cdn.jsdelivr.net\/npm\/xlsx@0.18.5\/dist\/xlsx.full.min.js\"&gt;&lt;\/script&gt;\n    &lt;style&gt;\n\n        .question-item {\n            cursor: pointer;\n            padding: 8px;\n            border-bottom: 1px solid #eee;\n        }\n        .question-item:hover {\n            background-color: #f8f9fa;\n        }\n        .question-item.active {\n            background-color: #e9ecef;\n        }\n        #question-container {\n            min-height: 300px;\n            border: 1px solid #dee2e6;\n            border-radius: 5px;\n            padding: 20px;\n        }\n        .hidden {\n            display: none;\n        }\n        .question-type-badge {\n            font-size: 0.75rem;\n            margin-left: 8px;\n        }\n        #answer-textarea {\n            min-height: 100px;\n        }\n        .option-label {\n            display: block;\n            margin-bottom: 5px;\n        }\n        \/* \u5bfc\u822a\u6309\u94ae\u6837\u5f0f *\/\n#prevBtn, #nextBtn {\n    min-width: 80px;\n}\n    &lt;\/style&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;div class=\"container mt-4\"&gt;\n        &lt;h2 class=\"mb-4\"&gt;\u51fa\u9898\u7cfb\u7edf&lt;\/h2&gt;\n        \n        &lt;!-- \u6587\u4ef6\u4e0a\u4f20\u533a\u57df --&gt;\n        &lt;div class=\"card mb-4\"&gt;\n            &lt;div class=\"card-header bg-primary text-white\"&gt;\n                &lt;h5&gt;\u4e0a\u4f20\u8bd5\u9898Excel\u6587\u4ef6&lt;\/h5&gt;\n            &lt;\/div&gt;\n            &lt;div class=\"card-body\"&gt;\n                &lt;div class=\"mb-3\"&gt;\n                    &lt;label for=\"excelFile\" class=\"form-label\"&gt;\u9009\u62e9Excel\u6587\u4ef6\uff1a&lt;\/label&gt;\n                    &lt;input class=\"form-control\" type=\"file\" id=\"excelFile\" accept=\".xlsx, .xls\"&gt;\n                &lt;\/div&gt;\n                &lt;button id=\"parseBtn\" class=\"btn btn-primary\"&gt;\u89e3\u6790\u6587\u4ef6&lt;\/button&gt;\n                &lt;div class=\"mt-2\"&gt;\n                    &lt;small class=\"text-muted\"&gt;\n                        Excel\u683c\u5f0f\u8981\u6c42\uff1a&lt;br&gt;\n                        - \u7b2c\u4e00\u5217: \u95ee\u9898\u6587\u672c&lt;br&gt;\n                        - \u7b2c\u4e8c\u5217: \u9898\u578b\uff08\"choice\"\u9009\u62e9\u9898\/\"answer\"\u7b80\u7b54\u9898\uff09&lt;br&gt;\n                        - \u9009\u62e9\u9898: \u540e\u7eed\u5217\u4e3a\u9009\u9879\uff0c\u6700\u540e\u4e00\u5217\u4e3a\u6b63\u786e\u7b54\u6848&lt;br&gt;\n                        - \u7b80\u7b54\u9898: \u7b2c\u4e09\u5217\u4e3a\u53c2\u8003\u7b54\u6848\n                    &lt;\/small&gt;\n                &lt;\/div&gt;\n            &lt;\/div&gt;\n        &lt;\/div&gt;\n        \n        &lt;div class=\"row\"&gt;\n            &lt;!-- \u9898\u76ee\u5217\u8868 --&gt;\n            &lt;div class=\"col-md-4\"&gt;\n                &lt;div class=\"card\"&gt;\n                    &lt;div class=\"card-header bg-secondary text-white\"&gt;\n                        &lt;div class=\"d-flex justify-content-between align-items-center\"&gt;\n                            &lt;span&gt;\u9898\u76ee\u5217\u8868&lt;\/span&gt;\n                            &lt;button id=\"randomBtn\" class=\"btn btn-sm btn-light\"&gt;\u968f\u673a\u4e00\u9898&lt;\/button&gt;\n                        &lt;\/div&gt;\n                    &lt;\/div&gt;\n                    &lt;div class=\"card-body p-0\"&gt;\n                        &lt;div id=\"questions-list\" style=\"max-height: 500px; overflow-y: auto;\"&gt;&lt;\/div&gt;\n                    &lt;\/div&gt;\n                &lt;\/div&gt;\n            &lt;\/div&gt;\n            \n            &lt;!-- \u9898\u76ee\u5c55\u793a\u4e0e\u7b54\u9898\u533a\u57df --&gt;\n            &lt;div class=\"col-md-8\"&gt;\n                &lt;div class=\"card\"&gt;\n                    &lt;div class=\"card-header bg-info text-white d-flex justify-content-between align-items-center\"&gt;\n                        &lt;h5 id=\"current-question-title\"&gt;\u9898\u76ee&lt;\/h5&gt;\n                        &lt;span id=\"question-type-badge\" class=\"badge bg-light text-dark question-type-badge\"&gt;&lt;\/span&gt;\n                    &lt;\/div&gt;\n                    &lt;div class=\"card-body\"&gt;\n                        &lt;div id=\"question-container\" class=\"mb-3\"&gt;\n                            &lt;p class=\"text-muted\"&gt;\u8bf7\u4ece\u5de6\u4fa7\u9009\u62e9\u9898\u76ee\u6216\u4e0a\u4f20Excel\u6587\u4ef6&lt;\/p&gt;\n                        &lt;\/div&gt;\n                        \n                        &lt;!-- \u9009\u62e9\u9898\u7b54\u9898\u533a\u57df --&gt;\n                        &lt;div id=\"choice-answer-section\" class=\"hidden\"&gt;\n                            &lt;h6&gt;\u8bf7\u9009\u62e9\u7b54\u6848\uff1a&lt;\/h6&gt;\n                            &lt;div id=\"choice-options\" class=\"mb-3\"&gt;&lt;\/div&gt;\n                        &lt;\/div&gt;\n                        \n                        &lt;!-- \u7b80\u7b54\u9898\u7b54\u9898\u533a\u57df --&gt;\n                        &lt;div id=\"text-answer-section\" class=\"hidden\"&gt;\n                            &lt;h6&gt;\u8bf7\u8f93\u5165\u4f60\u7684\u7b54\u6848\uff1a&lt;\/h6&gt;\n                            &lt;textarea id=\"answer-textarea\" class=\"form-control mb-3\"&gt;&lt;\/textarea&gt;\n                        &lt;\/div&gt;\n                        \n    &lt;div&gt;\n        &lt;button id=\"prevBtn\" class=\"btn btn-outline-secondary me-2\"&gt;\u4e0a\u4e00\u9898&lt;\/button&gt;\n        &lt;button id=\"nextBtn\" class=\"btn btn-outline-secondary\"&gt;\u4e0b\u4e00\u9898&lt;\/button&gt;\n    &lt;\/div&gt;\n    &lt;div&gt;\n        &lt;button id=\"showAnswerBtn\" class=\"btn btn-outline-success me-2\"&gt;\u67e5\u770b\u7b54\u6848&lt;\/button&gt;\n        &lt;button id=\"submitBtn\" class=\"btn btn-primary\"&gt;\u63d0\u4ea4\u7b54\u6848&lt;\/button&gt;\n    &lt;\/div&gt;\n                        \n                        &lt;!-- \u7528\u6237\u7b54\u6848\u663e\u793a --&gt;\n                        &lt;div id=\"user-answer-display\" class=\"mt-3 p-3 bg-light rounded hidden\"&gt;\n                            &lt;h6&gt;\u4f60\u7684\u7b54\u6848\uff1a&lt;\/h6&gt;\n                            &lt;div id=\"user-answer-content\"&gt;&lt;\/div&gt;\n                        &lt;\/div&gt;\n                        \n                        &lt;!-- \u6b63\u786e\u7b54\u6848\u663e\u793a --&gt;\n                        &lt;div id=\"correct-answer\" class=\"alert alert-success mt-3 hidden\"&gt;\n                            &lt;h6&gt;\u53c2\u8003\u7b54\u6848\uff1a&lt;\/h6&gt;\n                            &lt;div id=\"correct-answer-content\"&gt;&lt;\/div&gt;\n                        &lt;\/div&gt;\n                    &lt;\/div&gt;\n                &lt;\/div&gt;\n            &lt;\/div&gt;\n        &lt;\/div&gt;\n        \n        &lt;!-- \u4e0b\u8f7d\u6309\u94ae --&gt;\n        &lt;div class=\"mt-3 text-end hidden\" id=\"download-section\"&gt;\n            &lt;button id=\"downloadBtn\" class=\"btn btn-success\"&gt;\u4e0b\u8f7d\u5e26\u7b54\u6848\u7684Excel&lt;\/button&gt;\n        &lt;\/div&gt;\n    &lt;\/div&gt;\n\n    &lt;script&gt;\n        \/\/ \u5168\u5c40\u53d8\u91cf\n        let questions = &#91;];\n        let currentQuestionIndex = -1;\n        let userAnswers = {};\n        let workbook = null;\n        let worksheet = null;\n        \n        \/\/ DOM\u5143\u7d20\n        const prevBtn = document.getElementById('prevBtn');\nconst nextBtn = document.getElementById('nextBtn');\n\n\n        const questionsList = document.getElementById('questions-list');\n        const questionContainer = document.getElementById('question-container');\n        const choiceAnswerSection = document.getElementById('choice-answer-section');\n        const textAnswerSection = document.getElementById('text-answer-section');\n        const choiceOptionsDiv = document.getElementById('choice-options');\n        const answerTextarea = document.getElementById('answer-textarea');\n        const correctAnswerDiv = document.getElementById('correct-answer');\n        const correctAnswerContent = document.getElementById('correct-answer-content');\n        const currentQuestionTitle = document.getElementById('current-question-title');\n        const questionTypeBadge = document.getElementById('question-type-badge');\n        const userAnswerDisplay = document.getElementById('user-answer-display');\n        const userAnswerContent = document.getElementById('user-answer-content');\n        const parseBtn = document.getElementById('parseBtn');\n        const randomBtn = document.getElementById('randomBtn');\n        const showAnswerBtn = document.getElementById('showAnswerBtn');\n        const submitBtn = document.getElementById('submitBtn');\n        const downloadBtn = document.getElementById('downloadBtn');\n        const downloadSection = document.getElementById('download-section');\n        const excelFileInput = document.getElementById('excelFile');\n        \n        \/\/ \u4e8b\u4ef6\u76d1\u542c\n        prevBtn.addEventListener('click', showPreviousQuestion);\nnextBtn.addEventListener('click', showNextQuestion);\n\n\n        parseBtn.addEventListener('click', parseExcelFile);\n        randomBtn.addEventListener('click', showRandomQuestion);\n        showAnswerBtn.addEventListener('click', showCorrectAnswer);\n        submitBtn.addEventListener('click', submitAnswer);\n        downloadBtn.addEventListener('click', downloadExcelWithAnswers);\n\n        \/\/ \u663e\u793a\u4e0a\u4e00\u9898\nfunction showPreviousQuestion() {\n    if (currentQuestionIndex &lt;= 0) {\n        alert('\u5df2\u7ecf\u662f\u7b2c\u4e00\u9898\u4e86');\n        return;\n    }\n    showQuestion(currentQuestionIndex - 1);\n}\n\n\/\/ \u663e\u793a\u4e0b\u4e00\u9898\nfunction showNextQuestion() {\n    if (currentQuestionIndex &gt;= questions.length - 1) {\n        alert('\u5df2\u7ecf\u662f\u6700\u540e\u4e00\u9898\u4e86');\n        return;\n    }\n    showQuestion(currentQuestionIndex + 1);\n}\n        \n        \/\/ \u89e3\u6790Excel\u6587\u4ef6\n        function parseExcelFile() {\n            const file = excelFileInput.files&#91;0];\n            if (!file) {\n                alert('\u8bf7\u5148\u9009\u62e9Excel\u6587\u4ef6');\n                return;\n            }\n            \n            const reader = new FileReader();\n            reader.onload = function(e) {\n                const data = new Uint8Array(e.target.result);\n                workbook = XLSX.read(data, { type: 'array' });\n                \n                \/\/ \u83b7\u53d6\u7b2c\u4e00\u4e2a\u5de5\u4f5c\u8868\n                const firstSheetName = workbook.SheetNames&#91;0];\n                worksheet = workbook.Sheets&#91;firstSheetName];\n                \n                \/\/ \u8f6c\u6362\u4e3aJSON\n                const jsonData = XLSX.utils.sheet_to_json(worksheet, { header: 1 });\n                \n                \/\/ \u5904\u7406\u6570\u636e\n                questions = jsonData.filter(row =&gt; row.length &gt;= 3).map((row, index) =&gt; {\n                    const question = {\n                        id: index,\n                        text: row&#91;0],\n                        type: row&#91;1] || 'answer', \/\/ \u9ed8\u8ba4\u4e3a\u7b80\u7b54\u9898\n                        userAnswer: null,\n                        isAnswered: false\n                    };\n                    \n                    if (question.type === 'choice') {\n                        \/\/ \u9009\u62e9\u9898\n                        question.options = row.slice(2, -1);\n                        question.answer = row&#91;row.length - 1];\n                    } else {\n                        \/\/ \u7b80\u7b54\u9898\n                        question.answer = row&#91;2];\n                    }\n                    \n                    return question;\n                });\n                \n                if (questions.length === 0) {\n                    alert('Excel\u6587\u4ef6\u4e2d\u6ca1\u6709\u627e\u5230\u6709\u6548\u7684\u9898\u76ee\u6570\u636e');\n                    return;\n                }\n                \n                \/\/ \u521d\u59cb\u5316\u7528\u6237\u7b54\u6848\n                userAnswers = {};\n                \n                \/\/ \u6e32\u67d3\u9898\u76ee\u5217\u8868\n                renderQuestionsList();\n                \n                \/\/ \u663e\u793a\u7b2c\u4e00\u4e2a\u9898\u76ee\n                if (questions.length &gt; 0) {\n                    showQuestion(0);\n                }\n                \n                \/\/ \u663e\u793a\u4e0b\u8f7d\u6309\u94ae\n                downloadSection.classList.remove('hidden');\n                \n                alert(`\u6210\u529f\u89e3\u6790 ${questions.length} \u9053\u9898\u76ee\uff08${questions.filter(q =&gt; q.type === 'choice').length}\u9053\u9009\u62e9\u9898\uff0c${questions.filter(q =&gt; q.type === 'answer').length}\u9053\u7b80\u7b54\u9898\uff09`);\n            };\n            \n            reader.readAsArrayBuffer(file);\n        }\n        \n        \/\/ \u6e32\u67d3\u9898\u76ee\u5217\u8868\n        function renderQuestionsList() {\n            questionsList.innerHTML = '';\n            \n            questions.forEach((question, index) =&gt; {\n                const questionItem = document.createElement('div');\n                questionItem.className = 'question-item';\n                \n                \/\/ \u9898\u76ee\u6587\u672c\uff08\u622a\u77ed\u663e\u793a\uff09\n                const shortText = question.text.length &gt; 30 \n                    ? question.text.substring(0, 30) + '...' \n                    : question.text;\n                \n                questionItem.innerHTML = `\n                    ${index + 1}. ${shortText}\n                    &lt;span class=\"badge ${question.type === 'choice' ? 'bg-info' : 'bg-warning'} question-type-badge\"&gt;\n                        ${question.type === 'choice' ? '\u9009\u62e9\u9898' : '\u7b80\u7b54\u9898'}\n                    &lt;\/span&gt;\n                `;\n                \n                questionItem.dataset.index = index;\n                \n                \/\/ \u6807\u8bb0\u5df2\u56de\u7b54\u7684\u9898\u76ee\n                if (question.isAnswered) {\n                    questionItem.style.fontWeight = 'bold';\n                    questionItem.style.color = '#28a745';\n                }\n                \n                questionItem.addEventListener('click', () =&gt; {\n                    showQuestion(index);\n                });\n                \n                questionsList.appendChild(questionItem);\n            });\n        }\n        \n        \/\/ \u663e\u793a\u6307\u5b9a\u9898\u76ee\n        function showQuestion(index) {\n            \/\/ \u66f4\u65b0\u5bfc\u822a\u6309\u94ae\u72b6\u6001\n    prevBtn.disabled = index &lt;= 0;\n    nextBtn.disabled = index &gt;= questions.length - 1;\n            \/\/ \u66f4\u65b0\u5f53\u524d\u9898\u76ee\u7d22\u5f15\n            currentQuestionIndex = index;\n            \n            \/\/ \u66f4\u65b0\u5217\u8868\u4e2d\u7684\u6d3b\u52a8\u9879\n            const allItems = document.querySelectorAll('.question-item');\n            allItems.forEach(item =&gt; {\n                item.classList.remove('active');\n                if (parseInt(item.dataset.index) === index) {\n                    item.classList.add('active');\n                }\n            });\n            \n            \/\/ \u83b7\u53d6\u5f53\u524d\u9898\u76ee\n            const question = questions&#91;index];\n            currentQuestionTitle.textContent = `\u9898\u76ee ${index + 1}\/${questions.length}`;\n            \n            \/\/ \u66f4\u65b0\u9898\u578b\u6807\u8bc6\n            questionTypeBadge.textContent = question.type === 'choice' ? '\u9009\u62e9\u9898' : '\u7b80\u7b54\u9898';\n            questionTypeBadge.className = `badge ${question.type === 'choice' ? 'bg-info' : 'bg-warning'} question-type-badge`;\n            \n            \/\/ \u6e32\u67d3\u9898\u76ee\n            questionContainer.innerHTML = `&lt;h5&gt;${question.text}&lt;\/h5&gt;`;\n            \n            \/\/ \u6839\u636e\u9898\u578b\u663e\u793a\u4e0d\u540c\u7684\u7b54\u9898\u533a\u57df\n            if (question.type === 'choice') {\n                \/\/ \u9009\u62e9\u9898\n                choiceAnswerSection.classList.remove('hidden');\n                textAnswerSection.classList.add('hidden');\n                \n                \/\/ \u6e32\u67d3\u9009\u9879\n                let optionsHtml = '';\n                question.options.forEach((option, i) =&gt; {\n                    optionsHtml += `\n                        &lt;div class=\"form-check\"&gt;\n                            &lt;input class=\"form-check-input\" type=\"radio\" name=\"answer\" id=\"option-${i}\" value=\"${option}\"&gt;\n                            &lt;label class=\"form-check-label option-label\" for=\"option-${i}\"&gt;\n                                ${String.fromCharCode(65 + i)}. ${option}\n                            &lt;\/label&gt;\n                        &lt;\/div&gt;\n                    `;\n                });\n                \n                choiceOptionsDiv.innerHTML = optionsHtml;\n                \n                \/\/ \u6062\u590d\u5df2\u9009\u62e9\u7684\u7b54\u6848\n                if (question.userAnswer !== null) {\n                    const options = choiceOptionsDiv.querySelectorAll('input&#91;type=\"radio\"]');\n                    options.forEach(option =&gt; {\n                        if (option.value === question.userAnswer) {\n                            option.checked = true;\n                        }\n                    });\n                }\n            } else {\n                \/\/ \u7b80\u7b54\u9898\n                choiceAnswerSection.classList.add('hidden');\n                textAnswerSection.classList.remove('hidden');\n                \n                \/\/ \u6062\u590d\u5df2\u8f93\u5165\u7684\u7b54\u6848\n                answerTextarea.value = question.userAnswer || '';\n            }\n            \n            \/\/ \u663e\u793a\u7528\u6237\u7b54\u6848\n            updateUserAnswerDisplay();\n            \n            \/\/ \u9690\u85cf\u53c2\u8003\u7b54\u6848\n            correctAnswerDiv.classList.add('hidden');\n        }\n        \n        \/\/ \u66f4\u65b0\u7528\u6237\u7b54\u6848\u663e\u793a\n        function updateUserAnswerDisplay() {\n            const question = questions&#91;currentQuestionIndex];\n            \n            if (question.userAnswer !== null) {\n                userAnswerDisplay.classList.remove('hidden');\n                userAnswerContent.innerHTML = question.type === 'choice' \n                    ? `&lt;strong&gt;\u9009\u9879\uff1a&lt;\/strong&gt; ${question.userAnswer}`\n                    : question.userAnswer;\n            } else {\n                userAnswerDisplay.classList.add('hidden');\n            }\n        }\n        \n        \/\/ \u663e\u793a\u968f\u673a\u9898\u76ee\n        function showRandomQuestion() {\n            if (questions.length === 0) return;\n            \n            let randomIndex;\n            do {\n                randomIndex = Math.floor(Math.random() * questions.length);\n            } while (randomIndex === currentQuestionIndex &amp;&amp; questions.length &gt; 1);\n            \n            showQuestion(randomIndex);\n        }\n        \n        \/\/ \u663e\u793a\u6b63\u786e\u7b54\u6848\n        function showCorrectAnswer() {\n            if (currentQuestionIndex === -1) return;\n            \n            const question = questions&#91;currentQuestionIndex];\n            \n            if (question.type === 'choice') {\n                correctAnswerContent.innerHTML = `\n                    &lt;strong&gt;\u6b63\u786e\u7b54\u6848\uff1a&lt;\/strong&gt; ${question.answer}&lt;br&gt;\n                    ${question.options.includes(question.answer) \n                        ? `(${String.fromCharCode(65 + question.options.indexOf(question.answer))})` \n                        : ''}\n                `;\n            } else {\n                correctAnswerContent.innerHTML = question.answer;\n            }\n            \n            correctAnswerDiv.classList.remove('hidden');\n        }\n        \n        \/\/ \u63d0\u4ea4\u7b54\u6848\n        function submitAnswer() {\n            if (currentQuestionIndex === -1) return;\n            \n            const question = questions&#91;currentQuestionIndex];\n            let answer = null;\n            \n            if (question.type === 'choice') {\n                \/\/ \u9009\u62e9\u9898\n                const selectedOption = choiceOptionsDiv.querySelector('input&#91;name=\"answer\"]:checked');\n                if (!selectedOption) {\n                    alert('\u8bf7\u5148\u9009\u62e9\u4e00\u4e2a\u7b54\u6848');\n                    return;\n                }\n                answer = selectedOption.value;\n            } else {\n                \/\/ \u7b80\u7b54\u9898\n                answer = answerTextarea.value.trim();\n                if (!answer) {\n                    alert('\u8bf7\u8f93\u5165\u4f60\u7684\u7b54\u6848');\n                    return;\n                }\n            }\n            \n            \/\/ \u4fdd\u5b58\u7528\u6237\u7b54\u6848\n            question.userAnswer = answer;\n            question.isAnswered = true;\n            userAnswers&#91;currentQuestionIndex] = answer;\n            \n            \/\/ \u66f4\u65b0\u663e\u793a\n            updateUserAnswerDisplay();\n            \n            \/\/ \u66f4\u65b0\u9898\u76ee\u5217\u8868\u663e\u793a\n            renderQuestionsList();\n            \n            alert('\u7b54\u6848\u5df2\u4fdd\u5b58');\n        }\n        \n        \/\/ \u4e0b\u8f7d\u5e26\u7b54\u6848\u7684Excel\n        function downloadExcelWithAnswers() {\n            if (!workbook || !worksheet) {\n                alert('\u8bf7\u5148\u4e0a\u4f20\u5e76\u89e3\u6790Excel\u6587\u4ef6');\n                return;\n            }\n            \n            \/\/ \u83b7\u53d6\u539f\u59cb\u6570\u636e\n            const jsonData = XLSX.utils.sheet_to_json(worksheet, { header: 1 });\n            \n            \/\/ \u6dfb\u52a0\u7528\u6237\u7b54\u6848\u5217\n            const newData = jsonData.map((row, index) =&gt; {\n                if (index &gt;= questions.length || row.length === 0) return row;\n                \n                \/\/ \u521b\u5efa\u65b0\u884c\uff08\u907f\u514d\u4fee\u6539\u539f\u884c\uff09\n                const newRow = &#91;...row];\n                \n                \/\/ \u786e\u4fdd\u6709\u8db3\u591f\u7684\u5217\n                while (newRow.length &lt; 3) newRow.push('');\n                \n                \/\/ \u6dfb\u52a0\u7528\u6237\u7b54\u6848\u5217\n                if (questions&#91;index].isAnswered) {\n                    \/\/ \u5982\u679c\u5df2\u7ecf\u6709\u7528\u6237\u7b54\u6848\u5217\uff08\u7b2c4\u5217\uff09\uff0c\u66f4\u65b0\u5b83\n                    if (newRow.length &gt; 3) {\n                        newRow&#91;3] = questions&#91;index].userAnswer || '';\n                    } else {\n                        \/\/ \u5426\u5219\u6dfb\u52a0\u7528\u6237\u7b54\u6848\u5217\n                        newRow.push(questions&#91;index].userAnswer || '');\n                    }\n                } else if (newRow.length &lt;= 3) {\n                    \/\/ \u6ca1\u6709\u7b54\u6848\u4f46\u9700\u8981\u4fdd\u6301\u5217\u6570\u4e00\u81f4\n                    newRow.push('');\n                } else {\n                    newRow&#91;3] = '';\n                }\n                \n                return newRow;\n            });\n            \n            \/\/ \u66f4\u65b0\u5de5\u4f5c\u8868\n            const newWorksheet = XLSX.utils.aoa_to_sheet(newData);\n            workbook.Sheets&#91;workbook.SheetNames&#91;0]] = newWorksheet;\n            \n            \/\/ \u751f\u6210Excel\u6587\u4ef6\n            const excelBuffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' });\n            \n            \/\/ \u521b\u5efa\u4e0b\u8f7d\u94fe\u63a5\n            const blob = new Blob(&#91;excelBuffer], { type: 'application\/octet-stream' });\n            const url = URL.createObjectURL(blob);\n            const a = document.createElement('a');\n            a.href = url;\n            a.download = '\u5e26\u7b54\u6848\u7684\u8bd5\u9898.xlsx';\n            document.body.appendChild(a);\n            a.click();\n            document.body.removeChild(a);\n            URL.revokeObjectURL(url);\n        }\n    &lt;\/script&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u8fd9\u662f\u4e00\u4e2a\u57fa\u4e8e\u7eaf\u524d\u7aef\u7684\u51fa\u9898\u7cfb\u7edf\uff0c\u652f\u6301\u9009\u62e9\u9898\u548c\u7b80\u7b54\u9898\u4e24\u79cd\u9898\u578b\u3002\u7cfb\u7edf\u5b8c\u5168\u5728\u6d4f\u89c8\u5668\u4e2d\u8fd0\u884c\uff0c\u65e0\u9700\u670d\u52a1\u5668\u652f\u6301\uff0c\u6240\u6709\u6570\u636e\u5904\u7406 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[28],"class_list":["post-225","post","type-post","status-publish","format-standard","hentry","category-text","tag-html"],"_links":{"self":[{"href":"http:\/\/43.139.99.192\/index.php\/wp-json\/wp\/v2\/posts\/225","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/43.139.99.192\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/43.139.99.192\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/43.139.99.192\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/43.139.99.192\/index.php\/wp-json\/wp\/v2\/comments?post=225"}],"version-history":[{"count":2,"href":"http:\/\/43.139.99.192\/index.php\/wp-json\/wp\/v2\/posts\/225\/revisions"}],"predecessor-version":[{"id":228,"href":"http:\/\/43.139.99.192\/index.php\/wp-json\/wp\/v2\/posts\/225\/revisions\/228"}],"wp:attachment":[{"href":"http:\/\/43.139.99.192\/index.php\/wp-json\/wp\/v2\/media?parent=225"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/43.139.99.192\/index.php\/wp-json\/wp\/v2\/categories?post=225"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/43.139.99.192\/index.php\/wp-json\/wp\/v2\/tags?post=225"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}