{"id":2600,"date":"2023-12-20T19:45:35","date_gmt":"2023-12-20T11:45:35","guid":{"rendered":"https:\/\/bookmark.tw\/?p=2600"},"modified":"2025-08-08T20:27:10","modified_gmt":"2025-08-08T12:27:10","slug":"iq30","status":"publish","type":"post","link":"https:\/\/xinliceyan.org\/zh\/iq30","title":{"rendered":"\u570b\u969b\u6a19\u6e96\u667a\u5546IQ\u7dda\u4e0a\u514d\u8cbb\u6e2c\u9a57\uff0830\u984c\uff09"},"content":{"rendered":"<!-- Bootstrap CSS -->\n<link href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/bootstrap\/5.3.3\/css\/bootstrap.min.css\" rel=\"stylesheet\">\n<link href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/bootstrap-icons\/1.11.3\/font\/bootstrap-icons.min.css\" rel=\"stylesheet\">\n<style>\n    \/* \u6dfb\u52a0\u552f\u4e00\u524d\u7f00\u907f\u514dWordPress\u4e3b\u9898\u51b2\u7a81 *\/\n    #iqQuizContainer {\n        \/* \u5168\u5c40\u6837\u5f0f *\/\n        font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n        background: transparent;\n        min-height: 100vh;\n    }\n\n    \/* \u9875\u9762\u5207\u6362\u52a8\u753b *\/\n    #iqQuizContainer .page-section {\n        display: none;\n        animation: fadeIn 0.5s ease-in;\n    }\n\n    #iqQuizContainer .page-section.active {\n        display: block;\n    }\n\n    @keyframes fadeIn {\n        from {\n            opacity: 0;\n            transform: translateY(20px);\n        }\n        to {\n            opacity: 1;\n            transform: translateY(0);\n        }\n    }\n\n    \/* \u9009\u9879\u5361\u7247\u6837\u5f0f *\/\n    #iqQuizContainer .option-card {\n        border: 2px solid #e0e0e0 !important;\n        border-radius: 12px;\n        padding: 20px;\n        margin-bottom: 15px;\n        cursor: pointer;\n        transition: all 0.3s ease;\n        background: white !important;\n        position: relative;\n        overflow: hidden;\n    }\n\n    #iqQuizContainer .option-card:hover {\n        transform: translateX(5px);\n        box-shadow: 0 5px 20px rgba(0,0,0,0.1);\n        border-color: #667eea !important;\n    }\n\n    #iqQuizContainer .option-card.selected {\n        background: linear-gradient(135deg, #667eea 0%, #764ba2 100%) !important;\n        color: white !important;\n        border-color: #667eea !important;\n    }\n\n    \/* \u5706\u5f62\u9009\u62e9\u6307\u793a\u5668 *\/\n    #iqQuizContainer .option-indicator {\n        width: 24px;\n        height: 24px;\n        border: 2px solid #ddd;\n        border-radius: 50%;\n        display: inline-flex;\n        align-items: center;\n        justify-content: center;\n        margin-right: 15px;\n        transition: all 0.3s ease;\n        flex-shrink: 0;\n    }\n\n    #iqQuizContainer .option-card:hover .option-indicator {\n        border-color: #667eea;\n        background: #f0f4ff;\n    }\n\n    #iqQuizContainer .option-card.selected .option-indicator {\n        background: white;\n        border-color: white;\n    }\n\n    #iqQuizContainer .option-card.selected .option-indicator::after {\n        content: \"\u2713\";\n        color: #667eea;\n        font-weight: bold;\n        font-size: 14px;\n    }\n\n    \/* \u586b\u7a7a\u8f93\u5165\u6846\u6837\u5f0f - \u52a0\u5f3a\u4f18\u5148\u7ea7\u548c\u660e\u786e\u5b9a\u4e49 *\/\n    #iqQuizContainer input.fill-input,\n    #iqQuizContainer input[type=\"text\"].fill-input {\n        border: none !important;\n        border-bottom: 2px solid #667eea !important;\n        border-radius: 0 !important;\n        padding: 5px 10px !important;\n        font-size: 18px !important;\n        font-weight: 500 !important;\n        color: #667eea !important;\n        background: transparent !important;\n        background-color: transparent !important;\n        width: 120px !important;\n        text-align: center !important;\n        transition: all 0.3s ease !important;\n        box-shadow: none !important;\n        outline: none !important;\n        line-height: normal !important;\n        height: auto !important;\n        margin: 0 !important;\n        display: inline-block !important;\n        vertical-align: middle !important;\n        -webkit-appearance: none !important;\n        -moz-appearance: none !important;\n        appearance: none !important;\n    }\n\n    #iqQuizContainer input.fill-input:focus,\n    #iqQuizContainer input[type=\"text\"].fill-input:focus {\n        outline: none !important;\n        border: none !important;\n        border-bottom: 2px solid #764ba2 !important;\n        background: rgba(102, 126, 234, 0.05) !important;\n        background-color: rgba(102, 126, 234, 0.05) !important;\n        box-shadow: none !important;\n        color: #667eea !important;\n    }\n\n    #iqQuizContainer input.fill-input:hover,\n    #iqQuizContainer input[type=\"text\"].fill-input:hover {\n        background: rgba(102, 126, 234, 0.03) !important;\n        background-color: rgba(102, 126, 234, 0.03) !important;\n    }\n\n    \/* \u586b\u7a7a\u9898\u5bb9\u5668\u6837\u5f0f *\/\n    #iqQuizContainer .fill-answer-container {\n        background: rgba(102, 126, 234, 0.03) !important;\n        border-radius: 8px !important;\n        padding: 20px !important;\n        margin-top: 20px !important;\n    }\n\n    \/* \u8fdb\u5ea6\u6761\u6837\u5f0f *\/\n    #iqQuizContainer .progress {\n        height: 10px;\n        border-radius: 10px;\n        overflow: hidden;\n        background: #e9ecef !important;\n    }\n\n    #iqQuizContainer .progress-bar {\n        background: linear-gradient(90deg, #667eea 0%, #764ba2 100%) !important;\n        transition: width 0.5s ease;\n    }\n\n    \/* \u6309\u94ae\u6837\u5f0f *\/\n    #iqQuizContainer .btn-primary-gradient {\n        background: linear-gradient(135deg, #667eea 0%, #764ba2 100%) !important;\n        border: none !important;\n        color: white !important;\n        padding: 12px 30px !important;\n        border-radius: 50px !important;\n        font-weight: 600 !important;\n        transition: all 0.3s ease !important;\n        box-shadow: 0 4px 15px rgba(102, 126, 234, 0.3) !important;\n    }\n\n    #iqQuizContainer .btn-primary-gradient:hover {\n        transform: translateY(-2px);\n        box-shadow: 0 6px 20px rgba(102, 126, 234, 0.4) !important;\n    }\n\n    \/* \u5206\u6570\u6761\u5f62\u56fe\u6837\u5f0f *\/\n    #iqQuizContainer .score-distribution {\n        position: relative;\n        height: 60px;\n        border-radius: 10px;\n        overflow: hidden;\n        background: #f8f9fa;\n        margin: 30px 0;\n    }\n\n    #iqQuizContainer .score-bar {\n        position: absolute;\n        height: 100%;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        color: white;\n        font-weight: 600;\n        transition: all 0.3s ease;\n    }\n\n    #iqQuizContainer .score-bar:hover {\n        filter: brightness(1.1);\n        z-index: 10;\n    }\n\n    #iqQuizContainer .user-score-marker {\n        position: absolute;\n        top: -10px;\n        width: 20px;\n        height: 80px;\n        display: flex;\n        flex-direction: column;\n        align-items: center;\n        z-index: 100;\n        transition: all 0.3s ease;\n    }\n\n    #iqQuizContainer .marker-dot {\n        width: 20px;\n        height: 20px;\n        background: #ff4757;\n        border: 3px solid white;\n        border-radius: 50%;\n        box-shadow: 0 2px 10px rgba(255, 71, 87, 0.5);\n        animation: pulse 2s infinite;\n    }\n\n    @keyframes pulse {\n        0% {\n            box-shadow: 0 0 0 0 rgba(255, 71, 87, 0.7);\n        }\n        70% {\n            box-shadow: 0 0 0 10px rgba(255, 71, 87, 0);\n        }\n        100% {\n            box-shadow: 0 0 0 0 rgba(255, 71, 87, 0);\n        }\n    }\n\n    #iqQuizContainer .marker-line {\n        width: 2px;\n        height: 60px;\n        background: #ff4757;\n    }\n\n    \/* \u54cd\u5e94\u5f0f\u8bbe\u8ba1 *\/\n    @media (max-width: 768px) {\n        #iqQuizContainer .option-card {\n            padding: 15px;\n        }\n        \n        #iqQuizContainer input.fill-input,\n        #iqQuizContainer input[type=\"text\"].fill-input {\n            width: 80px !important;\n            font-size: 16px !important;\n        }\n    }\n\n    \/* \u989d\u5916\u7684WordPress\u4e3b\u9898\u91cd\u7f6e *\/\n    #iqQuizContainer * {\n        box-sizing: border-box;\n    }\n\n    #iqQuizContainer input:not([type=\"button\"]):not([type=\"submit\"]) {\n        max-width: none !important;\n    }\n<\/style>\n\n<div id=\"iqQuizContainer\" class=\"container py-5\">\n    \n    <!-- \u5f15\u5bfc\u9875 -->\n    <section id=\"introPage\" class=\"page-section active\">\n        <div class=\"row justify-content-center\">\n            <div class=\"col-lg-8\">\n                <div class=\"card border-0 shadow-lg rounded-4\">\n                    <div class=\"card-body p-5\">\n                        <!-- \u6807\u9898\u533a\u57df -->\n                        <div class=\"text-center mb-5\">\n                            <h1 class=\"display-4 fw-bold mb-3\" style=\"background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent;\">\n                                \u667a\u5546IQ\u6e2c\u9a57\n                            <\/h1>\n                            <p class=\"lead text-muted\">\u63a2\u7d22\u60a8\u7684\u667a\u529b\u6f5b\u80fd\uff0c\u767c\u73fe\u601d\u7dad\u7684\u7121\u9650\u53ef\u80fd<\/p>\n                        <\/div>\n                        \n                        <!-- \u7279\u70b9\u5361\u7247 -->\n                        <div class=\"row g-4 mb-5\">\n                            <div class=\"col-md-4\">\n                                <div class=\"text-center p-4 rounded-4 h-100\" style=\"background: rgba(102, 126, 234, 0.1);\">\n                                    <i class=\"bi bi-lightbulb fs-1 mb-3\" style=\"color: #667eea;\"><\/i>\n                                    <h5 class=\"fw-bold\">\u4e13\u4e1a\u6d4b\u8bc4<\/h5>\n                                    <p class=\"text-muted small mb-0\">30\u9053\u7cbe\u5fc3\u8a2d\u8a08\u984c\u76ee\uff0c\u5168\u9762\u8a55\u4f30\u60a8\u7684\u667a\u529b\u6c34\u5e73<\/p>\n                                <\/div>\n                            <\/div>\n                            <div class=\"col-md-4\">\n                                <div class=\"text-center p-4 rounded-4 h-100\" style=\"background: rgba(252, 159, 91, 0.1);\">\n                                    <i class=\"bi bi-clock fs-1 mb-3\" style=\"color: #fc9f5b;\"><\/i>\n                                    <h5 class=\"fw-bold\">\u9650\u6642\u6311\u6230<\/h5>\n                                    <p class=\"text-muted small mb-0\">30\u5206\u9418\u5167\u5b8c\u6210\u6e2c\u9a57\uff0c\u8003\u9a57\u60a8\u7684\u601d\u7dad\u654f\u6377\u5ea6<\/p>\n                                <\/div>\n                            <\/div>\n                            <div class=\"col-md-4\">\n                                <div class=\"text-center p-4 rounded-4 h-100\" style=\"background: rgba(142, 197, 252, 0.1);\">\n                                    <i class=\"bi bi-graph-up fs-1 mb-3\" style=\"color: #8ec5fc;\"><\/i>\n                                    <h5 class=\"fw-bold\">\u89c6\u89c9\u5316\u7ed3\u679c<\/h5>\n                                    <p class=\"text-muted small mb-0\">\u5716\u8868\u5c55\u793a\u60a8\u7684\u667a\u529b\u5206\u6790\uff0c\u4e00\u76ee\u4e86\u7136<\/p>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n                         <!-- \u4ecb\u7d39\u6587\u5b57 -->\n          <div class=\"card border-0 shadow-sm rounded-4 mb-5\">\n            <div class=\"card-body p-4\">\n              <p class=\"mb-3\">\u667a\u5546\uff08IQ\uff09\u662f\u8861\u91cf\u500b\u4eba\u667a\u529b\u6c34\u5e73\u7684\u91cd\u8981\u6307\u6a19\uff0c\u6db5\u84cb\u6578\u5b57\u3001\u7a7a\u9593\u3001\u908f\u8f2f\u3001\u8a5e\u5f59\u3001\u5275\u9020\u529b\u548c\u8a18\u61b6\u7b49\u591a\u500b\u8a8d\u77e5\u9818\u57df\u3002<\/p>\n              <p class=\"mb-0\">\u9019\u4efd\u6e2c\u9a57\u5c07\u5e6b\u52a9\u60a8\u4e86\u89e3\u81ea\u5df1\u7684\u667a\u529b\u6f5b\u80fd\uff0c\u767c\u73fe\u601d\u7dad\u7684\u5f37\u9805\u8207\u7279\u9ede\u3002\u6e96\u5099\u597d\u6311\u6230\u60a8\u7684\u5927\u8166\u4e86\u55ce\uff1f<\/p>\n            <\/div>\n          <\/div>\n                        <!-- \u5f00\u59cb\u6309\u94ae -->\n                        <div class=\"text-center\">\n                            <button class=\"btn btn-primary-gradient btn-lg\" onclick=\"startQuiz()\">\n                                <i class=\"bi bi-play-circle me-2\"><\/i>\u5f00\u59cb\u6d4b\u9a8c\n                            <\/button>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/section>\n\n    <!-- \u6d4b\u9a8c\u9875 -->\n    <section id=\"quizPage\" class=\"page-section\">\n        <div class=\"row justify-content-center\">\n            <div class=\"col-lg-8\">\n                <div class=\"card border-0 shadow-lg rounded-4\">\n                    <div class=\"card-body p-5\">\n                        <!-- \u6807\u9898\u548c\u8ba1\u65f6\u5668 -->\n                        <div class=\"d-flex justify-content-between align-items-center mb-4\">\n                            <h2 class=\"fw-bold mb-0\">\u667a\u5546IQ\u6e2c\u9a57<\/h2>\n                            <div class=\"d-flex align-items-center\">\n                                <i class=\"bi bi-clock me-2 text-muted\"><\/i>\n                                <span class=\"text-muted\" id=\"timer\">30:00<\/span>\n                            <\/div>\n                        <\/div>\n                        \n                        <!-- \u8fdb\u5ea6\u6761 -->\n                        <div class=\"mb-4\">\n                            <div class=\"d-flex justify-content-between mb-2\">\n                                <span class=\"text-muted\">\u95ee\u9898 <span id=\"currentNum\">1<\/span>\/30<\/span>\n                                <span class=\"text-muted\"><span id=\"answeredCount\">0<\/span> \u984c\u5df2\u7b54<\/span>\n                            <\/div>\n                            <div class=\"progress\">\n                                <div class=\"progress-bar\" id=\"progressBar\" style=\"width: 3.33%;\"><\/div>\n                            <\/div>\n                        <\/div>\n                        \n                        <!-- \u9898\u76ee\u5185\u5bb9 -->\n                        <div id=\"questionContainer\" class=\"mb-4\">\n                            <!-- \u52a8\u6001\u751f\u6210\u9898\u76ee -->\n                        <\/div>\n                        \n                        <!-- \u5bfc\u822a\u6309\u94ae -->\n                        <div class=\"d-flex justify-content-between\">\n                            <button class=\"btn btn-outline-secondary rounded-pill\" id=\"prevBtn\" onclick=\"previousQuestion()\" style=\"display: none;\">\n                                <i class=\"bi bi-arrow-left me-2\"><\/i>\u4e0a\u4e00\u9898\n                            <\/button>\n                            <button class=\"btn btn-primary-gradient rounded-pill ms-auto\" id=\"nextBtn\" onclick=\"nextQuestion()\">\n                                \u4e0b\u4e00\u9898<i class=\"bi bi-arrow-right ms-2\"><\/i>\n                            <\/button>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/section>\n\n    <!-- \u7ed3\u679c\u9875 -->\n    <section id=\"resultPage\" class=\"page-section\">\n        <div class=\"row justify-content-center\">\n            <div class=\"col-lg-10\">\n                <!-- \u5206\u6570\u5c55\u793a\u5361\u7247 -->\n                <div class=\"card border-0 shadow-lg rounded-4 mb-4\">\n                    <div class=\"card-body text-center p-5\" style=\"background: linear-gradient(135deg, #667eea20 0%, #764ba220 100%);\">\n                        <h2 class=\"fw-bold mb-4\">\u6d4b\u9a8c\u7ed3\u679c<\/h2>\n                        <div class=\"display-1 fw-bold mb-3\" style=\"background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent;\">\n                            <span id=\"totalScore\">0<\/span>\n                        <\/div>\n                        <p class=\"lead mb-0\">\u60a8\u7684IQ\u5206\u6578<\/p>\n                    <\/div>\n                <\/div>\n\n                <!-- \u5206\u6570\u5206\u5e03\u56fe -->\n                <div class=\"card border-0 shadow-lg rounded-4 mb-4\">\n                    <div class=\"card-body p-4\">\n                        <h4 class=\"fw-bold mb-4\">\u667a\u529b\u6c34\u5e73\u5206\u5e03<\/h4>\n                        <div id=\"scoreDistribution\" class=\"score-distribution\"><\/div>\n                        <div class=\"row mt-3\">\n                            <div class=\"col-12\">\n                                <div class=\"d-flex flex-wrap justify-content-center gap-3\" id=\"legendContainer\">\n                                    <!-- \u52a8\u6001\u751f\u6210\u56fe\u4f8b -->\n                                <\/div>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n\n                <!-- \u667a\u529b\u6c34\u5e73\u5206\u6790 -->\n                <div class=\"card border-0 shadow-lg rounded-4 mb-4\">\n                    <div class=\"card-body p-4\">\n                        <h4 class=\"fw-bold mb-3\">\u667a\u529b\u6c34\u5e73\u5206\u6790<\/h4>\n                        <div id=\"levelAnalysis\"><\/div>\n                    <\/div>\n                <\/div>\n\n                <!-- \u56fe\u8868\u5206\u6790 -->\n                <div class=\"card border-0 shadow-lg rounded-4 mb-4\">\n                    <div class=\"card-body p-4\">\n                        <h4 class=\"fw-bold mb-3\">\u7b54\u984c\u7d71\u8a08<\/h4>\n                        <div class=\"row\">\n                            <div class=\"col-md-6 mb-3\">\n                                <canvas id=\"pieChart\"><\/canvas>\n                            <\/div>\n                            <div class=\"col-md-6 mb-3\">\n                                <canvas id=\"radarChart\"><\/canvas>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n\n                <!-- \u4e2a\u6027\u5316\u5efa\u8bae -->\n                <div class=\"card border-0 shadow-lg rounded-4 mb-4\">\n                    <div class=\"card-body p-4\">\n                        <h4 class=\"fw-bold mb-3\">\u500b\u6027\u5316\u5efa\u8b70<\/h4>\n                        <div id=\"personalAdvice\"><\/div>\n                    <\/div>\n                <\/div>\n\n                <!-- \u91cd\u65b0\u6d4b\u8bd5\u6309\u94ae -->\n                <div class=\"text-center\">\n                    <button class=\"btn btn-primary-gradient btn-lg\" onclick=\"restartQuiz()\">\n                        <i class=\"bi bi-arrow-clockwise me-2\"><\/i>\u91cd\u65b0\u6d4b\u8bd5\n                    <\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/section>\n<\/div>\n\n<!-- Chart.js -->\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/Chart.js\/4.4.1\/chart.umd.min.js\"><\/script>\n\n<script>\n\/\/ \u7e41\u4f53\u7b80\u4f53\u8f6c\u6362\u6620\u5c04\nconst traditionalSimplifiedMap = {\n    '\u63e0': '\u63e0',\n    '\u5960': '\u5960',\n    '\u8166': '\u8111',\n    '\u7f8e': '\u7f8e',\n    '\u570b': '\u56fd',\n    '\u79d1': '\u79d1',\n    '\u5b78': '\u5b66',\n    '\u5f0f': '\u5f0f',\n    \/\/ \u53ef\u4ee5\u7ee7\u7eed\u6dfb\u52a0\u66f4\u591a\u6620\u5c04\n};\n\n\/\/ \u5c06\u6587\u5b57\u8f6c\u6362\u4e3a\u7edf\u4e00\u5f62\u5f0f\u8fdb\u884c\u6bd4\u8f83\nfunction normalizeAnswer(answer) {\n    if (!answer) return '';\n    let normalized = answer.toLowerCase().replace(\/\\s\/g, '');\n    \n    \/\/ \u7e41\u4f53\u8f6c\u7b80\u4f53\n    for (const [traditional, simplified] of Object.entries(traditionalSimplifiedMap)) {\n        normalized = normalized.replace(new RegExp(traditional, 'g'), simplified);\n    }\n    \n    return normalized;\n}\n\n\/\/ \u9898\u76ee\u6570\u636e\nconst questions = [\n    {\n        id: 1,\n        question: \"\u9078\u51fa\u4e0d\u540c\u985e\u7684\u4e00\u9805\uff1a\",\n        type: \"choice\",\n        options: [\"\u86c7\", \"\u5927\u6a39\", \"\u8001\u864e\"],\n        correct: 1,\n        category: \"\u5206\u985e\"\n    },\n    {\n        id: 2,\n        question: \"\u5728\u4e0b\u5217\u5206\u6578\u4e2d\uff0c\u9078\u51fa\u4e0d\u540c\u985e\u7684\u4e00\u9805\uff1a\",\n        type: \"choice\",\n        options: [\"3\/5\", \"3\/7\", \"3\/9\"],\n        correct: 2,\n        category: \"\u6578\u5b78\"\n    },\n    {\n        id: 3,\n        question: \"\u7537\u5b69\u5c0d\u7537\u5b50\uff0c\u6b63\u5982\u5973\u5b69\u5c0d\uff1a\",\n        type: \"choice\",\n        options: [\"\u9752\u5e74\", \"\u5b69\u5b50\", \"\u592b\u4eba\", \"\u59d1\u5a18\", \"\u5a66\u5973\"],\n        correct: 4,\n        category: \"\u908f\u8f2f\"\n    },\n    {\n        id: 4,\n        question: \"\u5982\u679c\u7b46\u76f8\u5c0d\u65bc\u5beb\u5b57\uff0c\u90a3\u9ebc\u66f8\u76f8\u5c0d\u65bc\uff1a\",\n        type: \"choice\",\n        options: [\"\u5a1b\u6a02\", \"\u95b1\u8b80\", \"\u5b78\u6587\u5316\", \"\u89e3\u9664\u75b2\u52de\"],\n        correct: 1,\n        category: \"\u908f\u8f2f\"\n    },\n    {\n        id: 5,\n        question: \"\u99ac\u4e4b\u65bc\u99ac\u5ec4\uff0c\u6b63\u5982\u4eba\u4e4b\u65bc\uff1a\",\n        type: \"choice\",\n        options: [\"\u725b\u68da\", \"\u99ac\u8eca\", \"\u623f\u5c4b\", \"\u8fb2\u5834\", \"\u6a13\u623f\"],\n        correct: 2,\n        category: \"\u908f\u8f2f\"\n    },\n    {\n        id: 6,\n        question: \"\u586b\u7a7a\u984c\uff1a\u8acb\u5beb\u51fa\u300c\uff08\uff09\u300d\u8655\u7684\u6578\u5b57\u3002\\n2\u30018\u300114\u300120\u3001\uff08\uff09\",\n        type: \"fill\",\n        correct: \"26\",\n        category: \"\u6578\u5b57\"\n    },\n    {\n        id: 7,\n        question: \"\u4e0b\u5217\u56db\u500b\u8a5e\u662f\u5426\u53ef\u4ee5\u7d44\u6210\u4e00\u500b\u6b63\u78ba\u7684\u53e5\u5b50\uff1a\\n\u751f\u6d3b\u3001\u6c34\u88e1\u3001\u9b5a\u3001\u5728\",\n        type: \"choice\",\n        options: [\"\u662f\", \"\u5426\"],\n        correct: 0,\n        category: \"\u8a9e\u8a00\"\n    },\n    {\n        id: 8,\n        question: \"\u4e0b\u5217\u516d\u500b\u8a5e\u662f\u5426\u53ef\u4ee5\u7d44\u6210\u4e00\u500b\u6b63\u78ba\u7684\u53e5\u5b50\uff1a\\n\u7403\u68d2\u3001\u7684\u3001\u7528\u4f86\u3001\u662f\u3001\u68d2\u7403\u3001\u6253\",\n        type: \"choice\",\n        options: [\"\u662f\", \"\u5426\"],\n        correct: 0,\n        category: \"\u8a9e\u8a00\"\n    },\n    {\n        id: 9,\n        question: \"\u52d5\u7269\u5b78\u5bb6\u8207\u793e\u6703\u5b78\u5bb6\u76f8\u5c0d\u61c9\uff0c\u6b63\u5982\u52d5\u7269\u8207\uff08\uff09\u76f8\u5c0d\u61c9\",\n        type: \"choice\",\n        options: [\"\u4eba\u985e\", \"\u554f\u984c\", \"\u793e\u6703\", \"\u793e\u6703\u5b78\"],\n        correct: 0,\n        category: \"\u908f\u8f2f\"\n    },\n    {\n        id: 10,\n        question: \"\u5982\u679c\u6240\u6709\u7684\u5a66\u5973\u90fd\u6709\u5927\u8863\uff0c\u90a3\u9ebc\u6f02\u4eae\u7684\u5a66\u5973\u6703\u6709\uff1a\",\n        type: \"choice\",\n        options: [\"\u66f4\u591a\u7684\u5927\u8863\", \"\u6642\u9ae6\u7684\u5927\u8863\", \"\u5927\u8863\", \"\u6602\u8cb4\u7684\u5927\u8863\"],\n        correct: 2,\n        category: \"\u908f\u8f2f\"\n    },\n    {\n        id: 11,\n        question: \"\u586b\u7a7a\u984c\uff1a\u8acb\u5beb\u51fa\u300c\uff08\uff09\u300d\u8655\u7684\u6578\u5b57\\n1\u30013\u30012\u30014\u30016\u30015\u30017\u3001\uff08\uff09\",\n        type: \"fill\",\n        correct: \"9\",\n        category: \"\u6578\u5b57\"\n    },\n    {\n        id: 12,\n        question: \"\u5357\u4e4b\u65bc\u897f\u5317\uff0c\u6b63\u5982\u897f\u4e4b\u65bc\uff1a\",\n        type: \"choice\",\n        options: [\"\u897f\u5317\", \"\u6771\u5317\", \"\u897f\u5357\", \"\u6771\u5357\"],\n        correct: 1,\n        category: \"\u7a7a\u9593\"\n    },\n    {\n        id: 13,\n        question: \"\u627e\u51fa\u4e0d\u540c\u985e\u7684\u4e00\u9805\uff1a\",\n        type: \"choice\",\n        options: [\"\u9435\u934b\", \"\u5c0f\u52fa\", \"\u7c73\u98ef\", \"\u789f\u5b50\"],\n        correct: 2,\n        category: \"\u5206\u985e\"\n    },\n    {\n        id: 14,\n        question: \"\u8acb\u5beb\u51fa\u300c\uff08\uff09\u300d\u8655\u7684\u6578\u5b57\\n9\u30017\u30018\u30016\u30017\u30015\u3001\uff08\uff09\",\n        type: \"fill\",\n        correct: \"6\",\n        category: \"\u6578\u5b57\"\n    },\n    {\n        id: 15,\n        question: \"\u627e\u51fa\u4e0d\u540c\u985e\u7684\u4e00\u9805\uff1a\",\n        type: \"choice\",\n        options: [\"\u5beb\u5b57\u6aaf\", \"\u6c99\u767c\", \"\u96fb\u8996\", \"\u684c\u5e03\"],\n        correct: 3,\n        category: \"\u5206\u985e\"\n    },\n    {\n        id: 16,\n        question: \"\u586b\u7a7a\u984c\uff1a\u8acb\u5beb\u51fa\uff08\uff09\u5167\u7684\u6578\u5b57\\n961\u3001(25)\u3001432\u3001932\u3001\uff08\uff09\u3001731\",\n        type: \"fill\",\n        correct: \"38\",\n        category: \"\u6578\u5b57\"\n    },\n    {\n        id: 17,\n        question: \"\u9078\u9805ABCD\u4e2d\uff0c\u54ea\u4e00\u500b\u61c9\u8a72\u586b\u5728\u300cXOOOOXXOOOXXX\u300d\u5f8c\u9762\",\n        type: \"choice\",\n        options: [\"XOO\", \"OO\", \"OOX\", \"OXX\"],\n        correct: 1,\n        category: \"\u6a21\u5f0f\"\n    },\n    {\n        id: 18,\n        question: \"\u671b\u5b50\u6210\u9f8d\u7684\u5bb6\u9577\u5f80\u5f80\uff08\uff09\u82d7\u52a9\u9577\",\n        type: \"choice\",\n        options: [\"\u63e0\", \"\u5830\", \"\u5043\"],\n        correct: 0,\n        category: \"\u8a9e\u8a00\"\n    },\n    {\n        id: 19,\n        question: \"\u586b\u7a7a\u984c\uff1a\uff08\uff09\u91cc\u586b\u4e0a\u7a7a\u7f3a\u7684\u8a5e\uff1a\\n\u91d1\u9ec3\u7684\u982d\u9aee\uff08\u9ec3\u5c71\uff09\u5200\u5c71\u706b\u6d77\\n\u8b9a\u7f8e\u4eba\u751f\uff08\uff09\u885b\u570b\u6230\u722d\",\n        type: \"fill\",\n        correct: \"\u7f8e\u570b\",\n        category: \"\u8a9e\u8a00\"\n    },\n    {\n        id: 20,\n        question: \"\u9078\u51fa\u4e0d\u540c\u985e\u7684\u4e00\u9805\uff1a\",\n        type: \"choice\",\n        options: [\"\u5730\u677f\", \"\u58c1\u6ae5\", \"\u7a97\u6236\", \"\u5929\u82b1\u677f\"],\n        correct: 3,\n        category: \"\u5206\u985e\"\n    },\n    {\n        id: 21,\n        question: \"\u586b\u7a7a\u984c\uff1a\u8acb\u5beb\u51fa\uff08\uff09\u5167\u7684\u6578\u5b57\u3002\\n1\u30018\u30012\u30017\u3001\uff08\uff09\",\n        type: \"fill\",\n        correct: \"58\",\n        category: \"\u6578\u5b57\"\n    },\n    {\n        id: 22,\n        question: \"\u586b\u7a7a\u984c\uff1a\uff08\uff09\u91cc\u586b\u4e0a\u7a7a\u7f3a\u7684\u8a5e\uff1a\\n\u7f44\u7af9\u96e3\u66f8\uff08\u66f8\u6cd5\uff09\u7121\u6cd5\u7121\u5929\\n\u4f5c\u5978\u72af\u79d1\uff08\uff09\u6559\u5b78\u76f8\u9577\",\n        type: \"fill\",\n        correct: \"\u79d1\u5b78\",\n        category: \"\u8a9e\u8a00\"\n    },\n    {\n        id: 23,\n        question: \"\u586b\u7a7a\u984c\uff1a\u5728\u62ec\u865f\u5167\u586b\u4e0a\u4e00\u500b\u5b57\uff0c\u4f7f\u5176\u8207\u62ec\u865f\u524d\u7684\u5b57\u7d44\u6210\u4e00\u500b\u8a5e\uff0c\u540c\u6642\u53c8\u8207\u62ec\u865f\u5f8c\u7684\u5b57\u4e5f\u80fd\u7d44\u6210\u4e00\u500b\u8a5e\uff1a\\n\u6b3e\uff08\uff09\u6a23\",\n        type: \"fill\",\n        correct: \"\u5f0f\",\n        category: \"\u8a9e\u8a00\"\n    },\n    {\n        id: 24,\n        question: \"\u586b\u7a7a\u984c\uff1a\u62ec\u865f\u91cc\u586b\u5165\u7a7a\u7f3a\u7684\u6578\u5b57\\n16\u3001(96)\u300112\u300110\u3001\uff08\uff09\u30017.5\",\n        type: \"fill\",\n        correct: \"60\",\n        category: \"\u6578\u5b57\"\n    },\n    {\n        id: 25,\n        question: \"\u627e\u51fa\u4e0d\u540c\u985e\u7684\u4e00\u9805\uff1a\",\n        type: \"choice\",\n        options: [\"\u6591\u99ac\", \"\u8ecd\u99ac\", \"\u8cfd\u99ac\", \"\u99ff\u99ac\", \"\u99d9\u99ac\"],\n        correct: 4,\n        category: \"\u5206\u985e\"\n    },\n    {\n        id: 26,\n        question: \"\u586b\u7a7a\u984c\uff1a\u5728\u62ec\u865f\u91cc\u586b\u4e0a\u4e00\u500b\u5b57\uff0c\u4f7f\u5176\u8207\u62ec\u865f\u524d\u7684\u5b57\u7d44\u6210\u4e00\u500b\u8a5e\uff0c\u540c\u6642\u53c8\u8207\u62ec\u865f\u5f8c\u7684\u5b57\u4e5f\u80fd\u7d44\u6210\u4e00\u500b\u8a5e\uff1a\\n\u796d\uff08\uff09\u5b9a\",\n        type: \"fill\",\n        correct: \"\u5960\",\n        category: \"\u8a9e\u8a00\"\n    },\n    {\n        id: 27,\n        question: \"\u586b\u7a7a\u984c\uff1a\u5728\u62ec\u865f\u5167\u586b\u4e0a\u4e00\u500b\u5b57\uff0c\u4f7f\u4e4b\u65e2\u6709\u524d\u4e00\u500b\u8a5e\u7684\u610f\u601d\uff0c\u53c8\u53ef\u4ee5\u8207\u5f8c\u4e00\u500b\u8a5e\u7d44\u6210\u8a5e\u7d44\uff1a\\n\u982d\u90e8\uff08\uff09\u9707\u76ea\",\n        type: \"fill\",\n        correct: \"\u8166\",\n        category: \"\u8a9e\u8a00\"\n    },\n    {\n        id: 28,\n        question: \"\u586b\u7a7a\u984c\uff1a\uff08\uff09\u91cc\u586b\u5165\u7a7a\u7f3a\u7684\u6578\u5b57\\n65\u300137\u300117\u3001\uff08\uff09\",\n        type: \"fill\",\n        correct: \"5\",\n        category: \"\u6578\u5b57\"\n    },\n    {\n        id: 29,\n        question: \"\u586b\u7a7a\u984c\uff1a\uff08\uff09\u91cc\u586b\u5165\u7a7a\u7f3a\u7684\u6578\u5b57\\n41\u3001(28)\u300127\u300183\u3001\uff08\uff09\u300165\",\n        type: \"fill\",\n        correct: \"36\",\n        category: \"\u6578\u5b57\"\n    },\n    {\n        id: 30,\n        question: \"\uff08\uff09\u91cc\u586b\u4e0a\u7a7a\u7f3a\u7684\u5b57\u6bcd\uff1a\\nCFI\u3001DHL\u3001EJ\uff08\uff09\",\n        type: \"fill\",\n        correct: \"O\",\n        category: \"\u6a21\u5f0f\"\n    }\n];\n\n\/\/ \u5168\u5c40\u53d8\u91cf\nlet currentQuestion = 0;\nlet answers = new Array(30).fill(null);\nlet timer = null;\nlet timeLeft = 30 * 60;\nlet charts = {};\n\n\/\/ \u5f00\u59cb\u6d4b\u9a8c\nfunction startQuiz() {\n    document.getElementById('introPage').classList.remove('active');\n    document.getElementById('quizPage').classList.add('active');\n    \n    currentQuestion = 0;\n    answers = new Array(30).fill(null);\n    timeLeft = 30 * 60;\n    \n    showQuestion();\n    startTimer();\n}\n\n\/\/ \u8ba1\u65f6\u5668\nfunction startTimer() {\n    timer = setInterval(() => {\n        timeLeft--;\n        \n        if (timeLeft <= 0) {\n            submitQuiz();\n            return;\n        }\n        \n        const minutes = Math.floor(timeLeft \/ 60);\n        const seconds = timeLeft % 60;\n        document.getElementById('timer').textContent = \n            `${minutes}:${seconds.toString().padStart(2, '0')}`;\n    }, 1000);\n}\n\n\/\/ \u663e\u793a\u9898\u76ee\nfunction showQuestion() {\n    const q = questions[currentQuestion];\n    const container = document.getElementById('questionContainer');\n    \n    \/\/ \u66f4\u65b0\u8fdb\u5ea6\n    document.getElementById('currentNum').textContent = currentQuestion + 1;\n    document.getElementById('progressBar').style.width = \n        `${((currentQuestion + 1) \/ questions.length) * 100}%`;\n    \n    \/\/ \u66f4\u65b0\u5df2\u7b54\u9898\u6570\n    const answeredCount = answers.filter(a => a !== null).length;\n    document.getElementById('answeredCount').textContent = answeredCount;\n    \n    \/\/ \u663e\u793a\/\u9690\u85cf\u5bfc\u822a\u6309\u94ae\n    document.getElementById('prevBtn').style.display = \n        currentQuestion > 0 ? 'inline-block' : 'none';\n    document.getElementById('nextBtn').textContent = \n        currentQuestion === questions.length - 1 ? '\u63d0\u4ea4\u6e2c\u9a57' : '\u4e0b\u4e00\u984c';\n    \n    \/\/ \u751f\u6210\u9898\u76ee\u5185\u5bb9\n    let html = `<h4 class=\"mb-4\">${q.question.replace(\/\\n\/g, '<br>')}<\/h4>`;\n    \n    if (q.type === 'choice') {\n        \/\/ \u9009\u62e9\u9898\n        html += '<div class=\"options-container\">';\n        q.options.forEach((option, index) => {\n            const isSelected = answers[currentQuestion] === index;\n            html += `\n                <div class=\"option-card ${isSelected ? 'selected' : ''}\" \n                     onclick=\"selectOption(${index})\">\n                    <div class=\"d-flex align-items-center\">\n                        <div class=\"option-indicator\"><\/div>\n                        <div>\n                            <strong>${String.fromCharCode(65 + index)}.<\/strong> ${option}\n                        <\/div>\n                    <\/div>\n                <\/div>\n            `;\n        });\n        html += '<\/div>';\n    } else {\n        \/\/ \u586b\u7a7a\u9898 - \u6539\u8fdb\u7684\u6837\u5f0f\u548c\u7ed3\u6784\n        html += `\n            <div class=\"fill-answer-container\">\n                <label class=\"form-label text-muted mb-3\">\u8acb\u5728\u4e0b\u65b9\u8f38\u5165\u60a8\u7684\u7b54\u6848\uff1a<\/label>\n                <div class=\"d-flex align-items-center gap-3\">\n                    <div style=\"position: relative; display: inline-block;\">\n                        <input type=\"text\" \n                               class=\"fill-input\" \n                               id=\"fillAnswer\" \n                               value=\"${answers[currentQuestion] || ''}\"\n                               placeholder=\"\u7b54\u6848\"\n                               onchange=\"saveFillAnswer()\"\n                               oninput=\"saveFillAnswer()\"\n                               autocomplete=\"off\">\n                    <\/div>\n                    <span class=\"text-muted\">\uff08\u8acb\u8f38\u5165\u6b63\u78ba\u7b54\u6848\uff09<\/span>\n                <\/div>\n                <div class=\"mt-3 text-muted small\">\n                    <i class=\"bi bi-info-circle me-1\"><\/i>\n                    \u63d0\u793a\uff1a\u8acb\u76f4\u63a5\u8f38\u5165\u7b54\u6848\uff0c\u7cfb\u7d71\u6703\u81ea\u52d5\u4fdd\u5b58\n                <\/div>\n            <\/div>\n        `;\n    }\n    \n    container.innerHTML = html;\n    \n    \/\/ \u5982\u679c\u662f\u586b\u7a7a\u9898\uff0c\u805a\u7126\u8f93\u5165\u6846\n    if (q.type === 'fill') {\n        setTimeout(() => {\n            const input = document.getElementById('fillAnswer');\n            if (input) {\n                input.focus();\n                \/\/ \u786e\u4fdd\u6837\u5f0f\u6b63\u786e\u5e94\u7528\n                input.style.cssText = `\n                    border: none !important;\n                    border-bottom: 2px solid #667eea !important;\n                    background: transparent !important;\n                    color: #667eea !important;\n                    font-size: 18px !important;\n                    font-weight: 500 !important;\n                    padding: 5px 10px !important;\n                    width: 120px !important;\n                    text-align: center !important;\n                `;\n            }\n        }, 100);\n    }\n}\n\n\/\/ \u9009\u62e9\u9009\u9879\nfunction selectOption(index) {\n    answers[currentQuestion] = index;\n    showQuestion(); \/\/ \u5237\u65b0\u663e\u793a\n}\n\n\/\/ \u4fdd\u5b58\u586b\u7a7a\u7b54\u6848\nfunction saveFillAnswer() {\n    const input = document.getElementById('fillAnswer');\n    if (input) {\n        answers[currentQuestion] = input.value.trim();\n    }\n}\n\n\/\/ \u4e0b\u4e00\u9898\nfunction nextQuestion() {\n    \/\/ \u4fdd\u5b58\u5f53\u524d\u586b\u7a7a\u9898\u7b54\u6848\n    if (questions[currentQuestion].type === 'fill') {\n        saveFillAnswer();\n    }\n    \n    if (currentQuestion === questions.length - 1) {\n        submitQuiz();\n    } else {\n        currentQuestion++;\n        showQuestion();\n    }\n}\n\n\/\/ \u4e0a\u4e00\u9898\nfunction previousQuestion() {\n    if (currentQuestion > 0) {\n        \/\/ \u4fdd\u5b58\u5f53\u524d\u586b\u7a7a\u9898\u7b54\u6848\n        if (questions[currentQuestion].type === 'fill') {\n            saveFillAnswer();\n        }\n        currentQuestion--;\n        showQuestion();\n    }\n}\n\n\/\/ \u63d0\u4ea4\u6d4b\u9a8c\nfunction submitQuiz() {\n    clearInterval(timer);\n    \n    \/\/ \u4fdd\u5b58\u6700\u540e\u7684\u586b\u7a7a\u9898\u7b54\u6848\n    if (questions[currentQuestion].type === 'fill') {\n        saveFillAnswer();\n    }\n    \n    const score = calculateScore();\n    showResults(score);\n}\n\n\/\/ \u8ba1\u7b97\u5206\u6570\nfunction calculateScore() {\n    let correct = 0;\n    \n    questions.forEach((q, index) => {\n        if (q.type === 'choice') {\n            if (answers[index] === q.correct) {\n                correct++;\n            }\n        } else {\n            \/\/ \u586b\u7a7a\u9898\uff1a\u652f\u6301\u7b80\u7e41\u4f53\u8f6c\u6362\n            const userAnswer = normalizeAnswer(answers[index]);\n            const correctAnswer = normalizeAnswer(q.correct);\n            if (userAnswer === correctAnswer) {\n                correct++;\n            }\n        }\n    });\n    \n    return correct * 5;\n}\n\n\/\/ \u663e\u793a\u7ed3\u679c\nfunction showResults(score) {\n    document.getElementById('quizPage').classList.remove('active');\n    document.getElementById('resultPage').classList.add('active');\n    \n    \/\/ \u663e\u793a\u5206\u6570\n    document.getElementById('totalScore').textContent = score;\n    \n    \/\/ \u521b\u5efa\u5206\u6570\u5206\u5e03\u56fe\n    createScoreDistribution(score);\n    \n    \/\/ \u663e\u793a\u667a\u529b\u6c34\u5e73\u5206\u6790\n    showLevelAnalysis(score);\n    \n    \/\/ \u663e\u793a\u4e2a\u6027\u5316\u5efa\u8bae\n    showPersonalizedAdvice(score);\n    \n    \/\/ \u7ed8\u5236\u56fe\u8868\n    drawCharts(score);\n}\n\n\/\/ \u521b\u5efa\u5206\u6570\u5206\u5e03\u6761\u5f62\u56fe\nfunction createScoreDistribution(userScore) {\n    const distribution = [\n        { range: '0-79', label: '\u9700\u8981\u63d0\u5347', color: '#95a5a6', min: 0, max: 79 },\n        { range: '80-89', label: '\u6b21\u6b63\u5e38', color: '#e67e22', min: 80, max: 89 },\n        { range: '90-99', label: '\u6b63\u5e38', color: '#f39c12', min: 90, max: 99 },\n        { range: '100-119', label: '\u512a\u79c0', color: '#2ecc71', min: 100, max: 119 },\n        { range: '120-139', label: '\u6700\u512a\u79c0', color: '#3498db', min: 120, max: 139 },\n        { range: '140-150', label: '\u5929\u624d', color: '#9b59b6', min: 140, max: 150 }\n    ];\n    \n    const container = document.getElementById('scoreDistribution');\n    let html = '';\n    \n    \/\/ \u8ba1\u7b97\u6bcf\u4e2a\u533a\u95f4\u7684\u5bbd\u5ea6\n    distribution.forEach(item => {\n        const width = ((item.max - item.min + 1) \/ 151) * 100;\n        const left = (item.min \/ 151) * 100;\n        \n        html += `\n            <div class=\"score-bar\" style=\"\n                left: ${left}%;\n                width: ${width}%;\n                background: ${item.color};\n            \">\n                ${item.range}\n            <\/div>\n        `;\n    });\n    \n    \/\/ \u6dfb\u52a0\u7528\u6237\u5206\u6570\u6807\u8bb0\n    const markerPosition = (userScore \/ 150) * 100;\n    html += `\n        <div class=\"user-score-marker\" style=\"left: calc(${markerPosition}% - 10px);\">\n            <div class=\"marker-dot\"><\/div>\n            <div class=\"marker-line\"><\/div>\n        <\/div>\n    `;\n    \n    container.innerHTML = html;\n    \n    \/\/ \u521b\u5efa\u56fe\u4f8b\n    const legendContainer = document.getElementById('legendContainer');\n    let legendHtml = '';\n    distribution.forEach(item => {\n        legendHtml += `\n            <div class=\"d-flex align-items-center\">\n                <div style=\"width: 20px; height: 20px; background: ${item.color}; \n                           border-radius: 4px; margin-right: 8px;\"><\/div>\n                <span class=\"small\">${item.label} (${item.range})<\/span>\n            <\/div>\n        `;\n    });\n    legendContainer.innerHTML = legendHtml;\n}\n\n\/\/ \u663e\u793a\u667a\u529b\u6c34\u5e73\u5206\u6790\nfunction showLevelAnalysis(score) {\n    let level, description, advice;\n    \n    if (score >= 140) {\n        level = '\u5929\u624d\u7d1a\u5225';\n        description = '\u60a8\u7684\u667a\u5546\u9054\u5230\u4e86\u5929\u624d\u7d1a\u5225\uff01\u60a8\u64c1\u6709\u6975\u5176\u51fa\u8272\u7684\u8a8d\u77e5\u80fd\u529b\u3001\u5275\u9020\u6027\u601d\u7dad\u548c\u554f\u984c\u89e3\u6c7a\u80fd\u529b\u3002';\n        advice = '\u60a8\u5177\u6709\u975e\u51e1\u7684\u667a\u529b\u6f5b\u80fd\uff0c\u5efa\u8b70\u60a8\u5728\u79d1\u5b78\u7814\u7a76\u3001\u5275\u65b0\u767c\u660e\u6216\u85dd\u8853\u5275\u4f5c\u7b49\u9818\u57df\u767c\u63ee\u60a8\u7684\u5929\u8ce6\u3002';\n    } else if (score >= 120) {\n        level = '\u6700\u512a\u79c0\u6c34\u5e73';\n        description = '\u60a8\u7684\u667a\u5546\u5c6c\u65bc\u6700\u512a\u79c0\u7bc4\u570d\uff0c\u5177\u6709\u5353\u8d8a\u7684\u5b78\u7fd2\u80fd\u529b\u3001\u908f\u8f2f\u601d\u7dad\u548c\u5206\u6790\u80fd\u529b\u3002';\n        advice = '\u60a8\u5728\u5b78\u8853\u7814\u7a76\u3001\u5c08\u696d\u6280\u8853\u9818\u57df\u6709\u5f88\u5927\u512a\u52e2\uff0c\u53ef\u4ee5\u6311\u6230\u66f4\u9ad8\u96e3\u5ea6\u7684\u667a\u529b\u4efb\u52d9\u3002';\n    } else if (score >= 100) {\n        level = '\u512a\u79c0\u6c34\u5e73';\n        description = '\u60a8\u7684\u667a\u5546\u8655\u65bc\u512a\u79c0\u6c34\u5e73\uff0c\u5728\u5404\u65b9\u9762\u90fd\u8868\u73fe\u51fa\u8272\uff0c\u5177\u6709\u826f\u597d\u7684\u7406\u89e3\u548c\u61c9\u7528\u80fd\u529b\u3002';\n        advice = '\u60a8\u7684\u667a\u529b\u767c\u5c55\u5747\u8861\uff0c\u9069\u5408\u5f9e\u4e8b\u9700\u8981\u7d9c\u5408\u80fd\u529b\u7684\u5de5\u4f5c\uff0c\u6301\u7e8c\u5b78\u7fd2\u53ef\u4ee5\u9032\u4e00\u6b65\u63d0\u5347\u3002';\n    } else if (score >= 90) {\n        level = '\u6b63\u5e38\u6c34\u5e73';\n        description = '\u60a8\u7684\u667a\u5546\u5728\u6b63\u5e38\u7bc4\u570d\u5167\uff0c\u5177\u6709\u826f\u597d\u7684\u8a8d\u77e5\u80fd\u529b\u548c\u5b78\u7fd2\u6f5b\u529b\u3002';\n        advice = '\u900f\u904e\u7cfb\u7d71\u7684\u5b78\u7fd2\u548c\u8a13\u7df4\uff0c\u60a8\u53ef\u4ee5\u5728\u7279\u5b9a\u9818\u57df\u53d6\u5f97\u5f88\u597d\u7684\u6210\u5c31\u3002';\n    } else if (score >= 80) {\n        level = '\u6b21\u6b63\u5e38\u6c34\u5e73';\n        description = '\u60a8\u7684\u667a\u5546\u7565\u4f4e\u65bc\u5e73\u5747\u6c34\u5e73\uff0c\u4f46\u4ecd\u5728\u6b63\u5e38\u7bc4\u570d\u5167\u3002';\n        advice = '\u5efa\u8b70\u591a\u9032\u884c\u601d\u7dad\u8a13\u7df4\uff0c\u5982\u6578\u7368\u3001\u908f\u8f2f\u63a8\u7406\u7b49\uff0c\u53ef\u4ee5\u6709\u6548\u63d0\u5347\u8a8d\u77e5\u80fd\u529b\u3002';\n    } else {\n        level = '\u9700\u8981\u63d0\u5347';\n        description = '\u60a8\u7684\u6e2c\u8a66\u5206\u6578\u504f\u4f4e\uff0c\u53ef\u80fd\u9700\u8981\u66f4\u591a\u7684\u7df4\u7fd2\u548c\u5b78\u7fd2\u3002';\n        advice = '\u5efa\u8b70\u5f9e\u57fa\u790e\u958b\u59cb\uff0c\u5faa\u5e8f\u6f38\u9032\u5730\u63d0\u5347\u5404\u9805\u8a8d\u77e5\u80fd\u529b\uff0c\u4fdd\u6301\u7a4d\u6975\u7684\u5b78\u7fd2\u614b\u5ea6\u3002';\n    }\n    \n    const container = document.getElementById('levelAnalysis');\n    container.innerHTML = `\n        <div class=\"alert alert-info border-0 mb-3\">\n            <h5 class=\"fw-bold mb-2\">${level}<\/h5>\n            <p class=\"mb-0\">${description}<\/p>\n        <\/div>\n        <div class=\"p-3 bg-light rounded-3\">\n            <h6 class=\"fw-bold mb-2\">\n                <i class=\"bi bi-lightbulb text-warning me-2\"><\/i>\u767c\u5c55\u5efa\u8b70\n            <\/h6>\n            <p class=\"mb-0\">${advice}<\/p>\n        <\/div>\n    `;\n}\n\n\/\/ \u663e\u793a\u4e2a\u6027\u5316\u5efa\u8bae\nfunction showPersonalizedAdvice(score) {\n    \/\/ \u5206\u6790\u5404\u7c7b\u522b\u8868\u73b0\n    const categoryStats = {};\n    questions.forEach((q, index) => {\n        if (!categoryStats[q.category]) {\n            categoryStats[q.category] = { total: 0, correct: 0 };\n        }\n        categoryStats[q.category].total++;\n        \n        \/\/ \u5224\u65ad\u662f\u5426\u7b54\u5bf9\n        if (q.type === 'choice') {\n            if (answers[index] === q.correct) {\n                categoryStats[q.category].correct++;\n            }\n        } else {\n            const userAnswer = normalizeAnswer(answers[index]);\n            const correctAnswer = normalizeAnswer(q.correct);\n            if (userAnswer === correctAnswer) {\n                categoryStats[q.category].correct++;\n            }\n        }\n    });\n    \n    \/\/ \u8ba1\u7b97\u5404\u7c7b\u522b\u767e\u5206\u6bd4\u5e76\u6392\u5e8f\n    const categoryPercentages = [];\n    let totalCorrectPercentage = 0;\n    for (const [category, stats] of Object.entries(categoryStats)) {\n        const percentage = (stats.correct \/ stats.total) * 100;\n        categoryPercentages.push({ category, percentage, stats });\n        totalCorrectPercentage += percentage;\n    }\n    categoryPercentages.sort((a, b) => b.percentage - a.percentage);\n    \n    \/\/ \u8ba1\u7b97\u5e73\u5747\u6b63\u786e\u7387\n    const avgCorrectPercentage = totalCorrectPercentage \/ categoryPercentages.length;\n    \n    \/\/ \u627e\u51fa\u5f3a\u9879\u548c\u5f31\u9879\uff08\u8003\u8651\u591a\u4e2a\u7684\u60c5\u51b5\uff09\n    const topPercentage = categoryPercentages[0].percentage;\n    const bottomPercentage = categoryPercentages[categoryPercentages.length - 1].percentage;\n    \n    \/\/ \u4fee\u6b63\u903b\u8f91\uff1a\u53ea\u6709\u5728\u5f97\u5206\u5408\u7406\u7684\u60c5\u51b5\u4e0b\u624d\u8bc6\u522b\u5f3a\u9879\n    const strongCategories = categoryPercentages.filter(item => \n        item.percentage === topPercentage && item.percentage > 50\n    );\n    \n    \/\/ \u4fee\u6b63\u903b\u8f91\uff1a\u66f4\u5408\u7406\u5730\u8bc6\u522b\u5f31\u9879\n    const weakCategories = categoryPercentages.filter(item => \n        (item.percentage < 40) || \/\/ \u6b63\u786e\u7387\u4f4e\u4e8e40%\u7684\u90fd\u662f\u5f31\u9879\n        (item.percentage === bottomPercentage &#038;&#038; item.percentage < topPercentage - 20)\n    );\n    \n    \/\/ \u751f\u6210\u4e2a\u6027\u5316\u5efa\u8bae\n    const container = document.getElementById('personalAdvice');\n    \n    let adviceHtml = '<div class=\"row g-3\">';\n    \n    \/\/ \u6839\u636e\u603b\u5206\u5224\u65ad\u6574\u4f53\u8868\u73b0\n    if (score <= 30) {\n        \/\/ \u5f97\u5206\u5f88\u4f4e\u7684\u60c5\u51b5\n        adviceHtml += `\n            <div class=\"col-md-6\">\n                <div class=\"card border-0 h-100\" style=\"background: rgba(255, 99, 132, 0.1);\">\n                    <div class=\"card-body\">\n                        <h6 class=\"fw-bold text-danger mb-3\">\n                            <i class=\"bi bi-exclamation-triangle me-2\"><\/i>\u9700\u8981\u52a0\u5f37\u7df4\u7fd2\n                        <\/h6>\n                        <p class=\"mb-2\">\u6e2c\u8a66\u7d50\u679c\u986f\u793a\u60a8\u5728\u5404\u500b\u8a8d\u77e5\u9818\u57df\u90fd\u9700\u8981\u52a0\u5f37\u7df4\u7fd2\u3002<\/p>\n                        <p class=\"small text-muted mb-0\">\n                            \u4e0d\u8981\u6c23\u9912\uff01\u667a\u529b\u662f\u53ef\u4ee5\u901a\u904e\u8a13\u7df4\u63d0\u5347\u7684\u3002\u5efa\u8b70\u5f9e\u57fa\u790e\u984c\u76ee\u958b\u59cb\uff0c\u5faa\u5e8f\u6f38\u9032\u5730\u7df4\u7fd2\u3002\n                        <\/p>\n                    <\/div>\n                <\/div>\n            <\/div>\n        `;\n    } else if (strongCategories.length > 0) {\n        \/\/ \u6709\u5f3a\u9879\u7684\u60c5\u51b5\n        const strongCategoryNames = strongCategories.map(item => item.category).join('\u3001');\n        const avgStrongPercentage = Math.round(strongCategories.reduce((sum, item) => sum + item.percentage, 0) \/ strongCategories.length);\n        \n        adviceHtml += `\n            <div class=\"col-md-6\">\n                <div class=\"card border-0 h-100\" style=\"background: rgba(46, 204, 113, 0.1);\">\n                    <div class=\"card-body\">\n                        <h6 class=\"fw-bold text-success mb-3\">\n                            <i class=\"bi bi-star-fill me-2\"><\/i>\u60a8\u7684\u5f37\u9805\n                        <\/h6>\n                        <p class=\"mb-2\">\u60a8\u5728<strong>${strongCategoryNames}<\/strong>\u985e\u984c\u76ee\u8868\u73fe${strongCategories.length > 1 ? '\u5747' : ''}\u5f88\u51fa\u8272\uff0c\u6b63\u78ba\u7387\u9054\u5230${avgStrongPercentage}%\u3002<\/p>\n                        <p class=\"small text-muted mb-0\">\n                            ${getStrengthAdvice(strongCategories[0].category, strongCategories.length > 1)}\n                        <\/p>\n                    <\/div>\n                <\/div>\n            <\/div>\n        `;\n    } else if (avgCorrectPercentage >= 30 && avgCorrectPercentage <= 50) {\n        \/\/ \u8868\u73b0\u4e00\u822c\u4f46\u5747\u8861\u7684\u60c5\u51b5\n        adviceHtml += `\n            <div class=\"col-md-6\">\n                <div class=\"card border-0 h-100\" style=\"background: rgba(102, 126, 234, 0.1);\">\n                    <div class=\"card-body\">\n                        <h6 class=\"fw-bold mb-3\" style=\"color: #667eea;\">\n                            <i class=\"bi bi-graph-up me-2\"><\/i>\u6f5b\u529b\u5f85\u767c\u6398\n                        <\/h6>\n                        <p class=\"mb-2\">\u60a8\u5728\u5404\u500b\u8a8d\u77e5\u9818\u57df\u7684\u8868\u73fe\u8f03\u70ba\u5747\u8861\uff0c\u4f46\u6574\u9ad4\u9084\u6709\u63d0\u5347\u7a7a\u9593\u3002<\/p>\n                        <p class=\"small text-muted mb-0\">\n                            \u5efa\u8b70\u591a\u7df4\u7fd2\u5404\u985e\u578b\u984c\u76ee\uff0c\u627e\u5230\u81ea\u5df1\u7684\u8208\u8da3\u9ede\u548c\u64c5\u9577\u9818\u57df\uff0c\u91cd\u9ede\u7a81\u7834\u3002\n                        <\/p>\n                    <\/div>\n                <\/div>\n            <\/div>\n        `;\n    } else {\n        \/\/ \u5176\u4ed6\u60c5\u51b5\n        adviceHtml += `\n            <div class=\"col-md-6\">\n                <div class=\"card border-0 h-100\" style=\"background: rgba(102, 126, 234, 0.1);\">\n                    <div class=\"card-body\">\n                        <h6 class=\"fw-bold mb-3\" style=\"color: #667eea;\">\n                            <i class=\"bi bi-check-circle me-2\"><\/i>\u5747\u8861\u767c\u5c55\n                        <\/h6>\n                        <p class=\"mb-2\">\u60a8\u5728\u5404\u500b\u8a8d\u77e5\u9818\u57df\u7684\u8868\u73fe\u76f8\u5c0d\u5747\u8861\u3002<\/p>\n                        <p class=\"small text-muted mb-0\">\n                            \u5efa\u8b70\u9078\u64c7\u4e00\u500b\u611f\u8208\u8da3\u7684\u9818\u57df\u91cd\u9ede\u767c\u5c55\uff0c\u57f9\u990a\u5c08\u9577\u3002\n                        <\/p>\n                    <\/div>\n                <\/div>\n            <\/div>\n        `;\n    }\n    \n    \/\/ \u63d0\u5347\u7a7a\u95f4\u5206\u6790\n    if (score <= 30) {\n        \/\/ \u5f97\u5206\u5f88\u4f4e\u65f6\uff0c\u6240\u6709\u9886\u57df\u90fd\u9700\u8981\u63d0\u5347\n        adviceHtml += `\n            <div class=\"col-md-6\">\n                <div class=\"card border-0 h-100\" style=\"background: rgba(243, 156, 18, 0.1);\">\n                    <div class=\"card-body\">\n                        <h6 class=\"fw-bold text-warning mb-3\">\n                            <i class=\"bi bi-book me-2\"><\/i>\u5b78\u7fd2\u5efa\u8b70\n                        <\/h6>\n                        <p class=\"mb-2\">\u5efa\u8b70\u5f9e\u57fa\u790e\u77e5\u8b58\u958b\u59cb\u7cfb\u7d71\u5b78\u7fd2\uff0c\u6bcf\u5929\u4fdd\u6301\u4e00\u5b9a\u7684\u7df4\u7fd2\u91cf\u3002<\/p>\n                        <p class=\"small text-muted mb-0\">\n                            \u53ef\u4ee5\u5617\u8a66\uff1a\u95b1\u8b80\u76ca\u667a\u66f8\u7c4d\u3001\u73a9\u6578\u7368\u904a\u6232\u3001\u7df4\u7fd2\u908f\u8f2f\u63a8\u7406\u984c\u3001\u53c3\u52a0\u5b78\u7fd2\u5c0f\u7d44\u7b49\u3002\n                        <\/p>\n                    <\/div>\n                <\/div>\n            <\/div>\n        `;\n    } else if (weakCategories.length > 0 && weakCategories.length < categoryPercentages.length) {\n        \/\/ \u6709\u7279\u5b9a\u5f31\u9879\u7684\u60c5\u51b5\n        const weakCategoryNames = weakCategories.map(item => item.category).join('\u3001');\n        const avgWeakPercentage = Math.round(weakCategories.reduce((sum, item) => sum + item.percentage, 0) \/ weakCategories.length);\n        \n        adviceHtml += `\n            <div class=\"col-md-6\">\n                <div class=\"card border-0 h-100\" style=\"background: rgba(243, 156, 18, 0.1);\">\n                    <div class=\"card-body\">\n                        <h6 class=\"fw-bold text-warning mb-3\">\n                            <i class=\"bi bi-arrow-up-circle-fill me-2\"><\/i>\u63d0\u5347\u7a7a\u9593\n                        <\/h6>\n                        <p class=\"mb-2\">\u60a8\u5728<strong>${weakCategoryNames}<\/strong>\u985e\u984c\u76ee\u4ecd\u6709\u8f03\u5927\u9032\u6b65\u7a7a\u9593\uff0c\u6b63\u78ba\u7387\u70ba${avgWeakPercentage}%\u3002<\/p>\n                        <p class=\"small text-muted mb-0\">\n                            ${getImprovementAdvice(weakCategories[0].category, weakCategories.length > 1)}\n                        <\/p>\n                    <\/div>\n                <\/div>\n            <\/div>\n        `;\n    } else if (score >= 100 && weakCategories.length === 0) {\n        \/\/ \u9ad8\u5206\u4e14\u6ca1\u6709\u660e\u663e\u5f31\u9879\n        adviceHtml += `\n            <div class=\"col-md-6\">\n                <div class=\"card border-0 h-100\" style=\"background: rgba(46, 204, 113, 0.1);\">\n                    <div class=\"card-body\">\n                        <h6 class=\"fw-bold text-success mb-3\">\n                            <i class=\"bi bi-trophy me-2\"><\/i>\u5168\u9762\u767c\u5c55\n                        <\/h6>\n                        <p class=\"mb-2\">\u60a8\u5728\u5404\u500b\u8a8d\u77e5\u9818\u57df\u90fd\u6709\u4e0d\u932f\u7684\u8868\u73fe\uff0c\u6c92\u6709\u660e\u986f\u7684\u8584\u5f31\u74b0\u7bc0\u3002<\/p>\n                        <p class=\"small text-muted mb-0\">\n                            \u7e7c\u7e8c\u4fdd\u6301\u9019\u7a2e\u5168\u9762\u767c\u5c55\u7684\u72c0\u614b\uff0c\u53ef\u4ee5\u5617\u8a66\u66f4\u9ad8\u96e3\u5ea6\u7684\u7d9c\u5408\u6027\u6311\u6230\u3002\n                        <\/p>\n                    <\/div>\n                <\/div>\n            <\/div>\n        `;\n    } else {\n        \/\/ \u5176\u4ed6\u60c5\u51b5\uff1a\u8868\u73b0\u4e2d\u7b49\n        adviceHtml += `\n            <div class=\"col-md-6\">\n                <div class=\"card border-0 h-100\" style=\"background: rgba(102, 126, 234, 0.1);\">\n                    <div class=\"card-body\">\n                        <h6 class=\"fw-bold mb-3\" style=\"color: #667eea;\">\n                            <i class=\"bi bi-lightbulb me-2\"><\/i>\u6301\u7e8c\u9032\u6b65\n                        <\/h6>\n                        <p class=\"mb-2\">\u60a8\u7684\u8868\u73fe\u9084\u6709\u63d0\u5347\u7a7a\u9593\uff0c\u7e7c\u7e8c\u52aa\u529b\u53ef\u4ee5\u53d6\u5f97\u66f4\u597d\u7684\u6210\u7e3e\u3002<\/p>\n                        <p class=\"small text-muted mb-0\">\n                            \u5efa\u8b70\u5236\u5b9a\u5b78\u7fd2\u8a08\u5283\uff0c\u6bcf\u5929\u5805\u6301\u7df4\u7fd2\uff0c\u76f8\u4fe1\u60a8\u6703\u770b\u5230\u660e\u986f\u7684\u9032\u6b65\u3002\n                        <\/p>\n                    <\/div>\n                <\/div>\n            <\/div>\n        `;\n    }\n    \n    \/\/ \u7efc\u5408\u5efa\u8bae\n    adviceHtml += `\n        <div class=\"col-12\">\n            <div class=\"card border-0\" style=\"background: rgba(102, 126, 234, 0.1);\">\n                <div class=\"card-body\">\n                    <h6 class=\"fw-bold mb-3\" style=\"color: #667eea;\">\n                        <i class=\"bi bi-compass me-2\"><\/i>\u7d9c\u5408\u767c\u5c55\u5efa\u8b70\n                    <\/h6>\n                    ${getComprehensiveAdvice(score, categoryStats, strongCategories.length, weakCategories.length)}\n                <\/div>\n            <\/div>\n        <\/div>\n    `;\n    \n    adviceHtml += '<\/div>';\n    container.innerHTML = adviceHtml;\n}\n\n\/\/ \u83b7\u53d6\u5f3a\u9879\u5efa\u8bae\nfunction getStrengthAdvice(category, isMultiple = false) {\n    const advice = {\n        '\u6578\u5b57': '\u60a8\u7684\u6578\u5b78\u8a08\u7b97\u548c\u6578\u5b57\u654f\u611f\u5ea6\u5f88\u9ad8\uff0c\u9069\u5408\u5f9e\u4e8b\u6578\u64da\u5206\u6790\u3001\u91d1\u878d\u3001\u5de5\u7a0b\u7b49\u9818\u57df\u3002',\n        '\u908f\u8f2f': '\u60a8\u7684\u908f\u8f2f\u63a8\u7406\u80fd\u529b\u51fa\u8272\uff0c\u9069\u5408\u5f9e\u4e8b\u7de8\u7a0b\u3001\u6cd5\u5f8b\u3001\u79d1\u5b78\u7814\u7a76\u7b49\u9700\u8981\u56b4\u5bc6\u908f\u8f2f\u7684\u5de5\u4f5c\u3002',\n        '\u8a9e\u8a00': '\u60a8\u7684\u8a9e\u8a00\u7406\u89e3\u548c\u8868\u9054\u80fd\u529b\u512a\u79c0\uff0c\u9069\u5408\u5f9e\u4e8b\u5beb\u4f5c\u3001\u7ffb\u8b6f\u3001\u6559\u80b2\u7b49\u8a9e\u8a00\u76f8\u95dc\u5de5\u4f5c\u3002',\n        '\u7a7a\u9593': '\u60a8\u7684\u7a7a\u9593\u60f3\u50cf\u80fd\u529b\u5f88\u5f37\uff0c\u9069\u5408\u5f9e\u4e8b\u5efa\u7bc9\u8a2d\u8a08\u3001\u7f8e\u8853\u5275\u4f5c\u3001\u6a5f\u68b0\u5de5\u7a0b\u7b49\u9818\u57df\u3002',\n        '\u5206\u985e': '\u60a8\u7684\u5206\u985e\u6574\u7406\u80fd\u529b\u7a81\u51fa\uff0c\u9069\u5408\u5f9e\u4e8b\u5716\u66f8\u7ba1\u7406\u3001\u6578\u64da\u6574\u7406\u3001\u7cfb\u7d71\u5206\u6790\u7b49\u5de5\u4f5c\u3002',\n        '\u6a21\u5f0f': '\u60a8\u7684\u6a21\u5f0f\u8b58\u5225\u80fd\u529b\u512a\u79c0\uff0c\u9069\u5408\u5f9e\u4e8b\u4eba\u5de5\u667a\u80fd\u3001\u6578\u64da\u6316\u6398\u3001\u5e02\u5834\u5206\u6790\u7b49\u9818\u57df\u3002'\n    };\n    \n    let baseAdvice = advice[category] || '\u7e7c\u7e8c\u4fdd\u6301\u9019\u500b\u9818\u57df\u7684\u512a\u52e2\uff0c\u4e26\u5617\u8a66\u5c07\u5176\u61c9\u7528\u5230\u5be6\u969b\u751f\u6d3b\u4e2d\u3002';\n    \n    if (isMultiple) {\n        baseAdvice = '\u60a8\u5728\u591a\u500b\u8a8d\u77e5\u9818\u57df\u90fd\u8868\u73fe\u51fa\u8272\uff0c\u9019\u7a2e\u5747\u8861\u7684\u667a\u529b\u767c\u5c55\u70ba\u60a8\u63d0\u4f9b\u4e86\u5ee3\u6cdb\u7684\u8077\u696d\u9078\u64c7\u7a7a\u9593\u3002';\n    }\n    \n    return baseAdvice;\n}\n\n\/\/ \u83b7\u53d6\u63d0\u5347\u5efa\u8bae\nfunction getImprovementAdvice(category, isMultiple = false) {\n    const advice = {\n        '\u6578\u5b57': '\u5efa\u8b70\u591a\u7df4\u7fd2\u5fc3\u7b97\u3001\u6578\u7368\u7b49\u6578\u5b57\u904a\u6232\uff0c\u63d0\u5347\u6578\u5b57\u654f\u611f\u5ea6\u548c\u8a08\u7b97\u80fd\u529b\u3002',\n        '\u908f\u8f2f': '\u53ef\u4ee5\u900f\u904e\u4e0b\u68cb\u3001\u89e3\u8b0e\u904a\u6232\u7b49\u6d3b\u52d5\u4f86\u935b\u934a\u908f\u8f2f\u601d\u7dad\u80fd\u529b\u3002',\n        '\u8a9e\u8a00': '\u591a\u95b1\u8b80\u3001\u5beb\u4f5c\uff0c\u53c3\u8207\u8a0e\u8ad6\uff0c\u8c50\u5bcc\u8a5e\u5f59\u91cf\u548c\u8a9e\u8a00\u8868\u9054\u80fd\u529b\u3002',\n        '\u7a7a\u9593': '\u5617\u8a66\u62fc\u5716\u3001\u7a4d\u6728\u30013D\u5efa\u6a21\u7b49\u6d3b\u52d5\uff0c\u63d0\u5347\u7a7a\u9593\u60f3\u50cf\u80fd\u529b\u3002',\n        '\u5206\u985e': '\u7df4\u7fd2\u6574\u7406\u7269\u54c1\u3001\u5206\u985e\u4fe1\u606f\uff0c\u57f9\u990a\u7cfb\u7d71\u5316\u601d\u7dad\u3002',\n        '\u6a21\u5f0f': '\u89c0\u5bdf\u751f\u6d3b\u4e2d\u7684\u898f\u5f8b\uff0c\u7df4\u7fd2\u627e\u51fa\u5e8f\u5217\u4e2d\u7684\u6a21\u5f0f\uff0c\u63d0\u5347\u6a21\u5f0f\u8b58\u5225\u80fd\u529b\u3002'\n    };\n    \n    let baseAdvice = advice[category] || '\u900f\u904e\u91dd\u5c0d\u6027\u7684\u7df4\u7fd2\uff0c\u9019\u500b\u9818\u57df\u9084\u6709\u5f88\u5927\u7684\u63d0\u5347\u7a7a\u9593\u3002';\n    \n    if (isMultiple) {\n        baseAdvice = '\u5efa\u8b70\u5236\u5b9a\u7cfb\u7d71\u7684\u5b78\u7fd2\u8a08\u5283\uff0c\u91dd\u5c0d\u9019\u4e9b\u8584\u5f31\u74b0\u7bc0\u9032\u884c\u5c08\u9805\u8a13\u7df4\uff0c\u9010\u6b65\u63d0\u5347\u3002';\n    }\n    \n    return baseAdvice;\n}\n\n\/\/ \u83b7\u53d6\u7efc\u5408\u5efa\u8bae\nfunction getComprehensiveAdvice(score, categoryStats, strongCount, weakCount) {\n    let advice = '<ul class=\"mb-0\">';\n    \n    \/\/ \u57fa\u4e8e\u603b\u5206\u548c\u5f3a\u5f31\u9879\u5206\u5e03\u7684\u5efa\u8bae\n    if (score === 0) {\n        advice += '<li>\u6e2c\u8a66\u7d50\u679c\u986f\u793a\u60a8\u9700\u8981\u5f9e\u57fa\u790e\u958b\u59cb\u5b78\u7fd2\u3002\u5efa\u8b70\u5148\u4e86\u89e3\u5404\u985e\u578b\u984c\u76ee\u7684\u89e3\u984c\u601d\u8def\u3002<\/li>';\n        advice += '<li>\u4e0d\u8981\u7070\u5fc3\uff01\u6bcf\u500b\u4eba\u90fd\u6709\u81ea\u5df1\u7684\u5b78\u7fd2\u7bc0\u594f\uff0c\u91cd\u8981\u7684\u662f\u5805\u6301\u7df4\u7fd2\u3002<\/li>';\n        advice += '<li>\u53ef\u4ee5\u5f9e\u7c21\u55ae\u7684\u984c\u76ee\u958b\u59cb\uff0c\u9010\u6b65\u5efa\u7acb\u4fe1\u5fc3\uff0c\u518d\u6311\u6230\u66f4\u96e3\u7684\u984c\u76ee\u3002<\/li>';\n    } else if (score <= 30) {\n        advice += '<li>\u60a8\u7684\u6e2c\u8a66\u5206\u6578\u8f03\u4f4e\uff0c\u9019\u53ef\u80fd\u662f\u56e0\u70ba\u5c0d\u984c\u578b\u4e0d\u719f\u6089\u6216\u6642\u9593\u58d3\u529b\u3002<\/li>';\n        advice += '<li>\u5efa\u8b70\u5148\u4e0d\u9650\u6642\u7df4\u7fd2\uff0c\u7406\u89e3\u6bcf\u9053\u984c\u7684\u89e3\u984c\u908f\u8f2f\uff0c\u518d\u9010\u6b65\u63d0\u9ad8\u901f\u5ea6\u3002<\/li>';\n        advice += '<li>\u6bcf\u5929\u5805\u6301\u7df4\u7fd215-30\u5206\u9418\uff0c\u4e00\u500b\u6708\u5f8c\u60a8\u6703\u770b\u5230\u660e\u986f\u7684\u9032\u6b65\u3002<\/li>';\n    } else if (score <= 60) {\n        advice += '<li>\u60a8\u5df2\u7d93\u638c\u63e1\u4e86\u4e00\u4e9b\u57fa\u790e\u77e5\u8b58\uff0c\u4f46\u9084\u9700\u8981\u52a0\u5f37\u7df4\u7fd2\u3002<\/li>';\n        advice += '<li>\u5efa\u8b70\u91cd\u9ede\u95dc\u6ce8\u932f\u984c\uff0c\u5206\u6790\u932f\u8aa4\u539f\u56e0\uff0c\u907f\u514d\u91cd\u8907\u72af\u932f\u3002<\/li>';\n        advice += '<li>\u53ef\u4ee5\u5617\u8a66\u4e0d\u540c\u985e\u578b\u7684\u667a\u529b\u8a13\u7df4\uff0c\u5168\u9762\u63d0\u5347\u8a8d\u77e5\u80fd\u529b\u3002<\/li>';\n    } else if (score >= 120) {\n        if (strongCount > 2) {\n            advice += '<li>\u60a8\u7684\u591a\u500b\u667a\u529b\u9818\u57df\u90fd\u8868\u73fe\u512a\u79c0\uff0c\u5efa\u8b70\u5617\u8a66\u8de8\u9818\u57df\u7684\u7d9c\u5408\u6027\u6311\u6230\uff0c\u5982\u5b78\u8853\u7814\u7a76\u6216\u5275\u65b0\u9805\u76ee\u3002<\/li>';\n        } else {\n            advice += '<li>\u60a8\u7684\u6574\u9ad4\u667a\u529b\u6c34\u5e73\u5f88\u9ad8\uff0c\u5efa\u8b70\u5728\u4fdd\u6301\u5f37\u9805\u7684\u540c\u6642\uff0c\u9069\u7576\u62d3\u5c55\u77e5\u8b58\u5ee3\u5ea6\u3002<\/li>';\n        }\n    } else if (score >= 100) {\n        if (weakCount === 0) {\n            advice += '<li>\u60a8\u7684\u667a\u529b\u767c\u5c55\u5747\u8861\uff0c\u5efa\u8b70\u9078\u64c7\u4e00\u500b\u6700\u611f\u8208\u8da3\u7684\u9818\u57df\u6df1\u5165\u767c\u5c55\uff0c\u57f9\u990a\u5c08\u696d\u512a\u52e2\u3002<\/li>';\n        } else {\n            advice += '<li>\u5efa\u8b70\u5728\u4fdd\u6301\u73fe\u6709\u512a\u52e2\u7684\u540c\u6642\uff0c\u91cd\u9ede\u63d0\u5347\u8584\u5f31\u74b0\u7bc0\uff0c\u8ffd\u6c42\u66f4\u5168\u9762\u7684\u767c\u5c55\u3002<\/li>';\n        }\n    } else {\n        advice += '<li>\u5efa\u8b70\u5236\u5b9a\u7cfb\u7d71\u7684\u5b78\u7fd2\u8a08\u5283\uff0c\u5f9e\u57fa\u790e\u958b\u59cb\uff0c\u5faa\u5e8f\u6f38\u9032\u5730\u63d0\u5347\u5404\u9805\u8a8d\u77e5\u80fd\u529b\u3002<\/li>';\n    }\n    \n    \/\/ \u57fa\u4e8e\u7b54\u9898\u60c5\u51b5\u7684\u5efa\u8bae\n    const correctCount = score \/ 5;\n    const accuracy = (correctCount \/ questions.length * 100).toFixed(0);\n    \n    if (accuracy === \"0\") {\n        advice += '<li>\u5efa\u8b70\u5148\u4e86\u89e3IQ\u6e2c\u8a66\u7684\u57fa\u672c\u984c\u578b\u548c\u89e3\u984c\u6280\u5de7\uff0c\u518d\u9032\u884c\u7df4\u7fd2\u3002<\/li>';\n    } else if (accuracy < 30) {\n        advice += '<li>\u7b54\u984c\u6b63\u78ba\u7387\u8f03\u4f4e\uff0c\u5efa\u8b70\u653e\u6162\u901f\u5ea6\uff0c\u4ed4\u7d30\u7406\u89e3\u6bcf\u9053\u984c\u7684\u8981\u6c42\u3002<\/li>';\n    } else if (accuracy < 50) {\n        advice += '<li>\u7b54\u984c\u6b63\u78ba\u7387\u504f\u4f4e\uff0c\u5efa\u8b70\u4ed4\u7d30\u5be9\u984c\uff0c\u5145\u5206\u7406\u89e3\u984c\u610f\u5f8c\u518d\u4f5c\u7b54\uff0c\u907f\u514d\u5306\u5fd9\u6c7a\u5b9a\u3002<\/li>';\n    } else if (accuracy < 70) {\n        advice += '<li>\u6709\u4e00\u5b9a\u7684\u63d0\u5347\u7a7a\u9593\uff0c\u5efa\u8b70\u5206\u6790\u932f\u984c\u539f\u56e0\uff0c\u7406\u89e3\u80cc\u5f8c\u7684\u89e3\u984c\u908f\u8f2f\u548c\u77e5\u8b58\u9ede\u3002<\/li>';\n    } else {\n        advice += '<li>\u7b54\u984c\u6e96\u78ba\u7387\u4e0d\u932f\uff0c\u7e7c\u7e8c\u4fdd\u6301\u8a8d\u771f\u7d30\u7dfb\u7684\u614b\u5ea6\uff0c\u53ef\u4ee5\u5617\u8a66\u66f4\u5177\u6311\u6230\u6027\u7684\u984c\u76ee\u3002<\/li>';\n    }\n    \n    \/\/ \u65f6\u95f4\u7ba1\u7406\u5efa\u8bae\n    const timeUsed = 30 * 60 - timeLeft;\n    const avgTimePerQuestion = timeUsed \/ questions.length;\n    \n    if (score <= 30) {\n        \/\/ \u4f4e\u5206\u65f6\u4e0d\u5f3a\u8c03\u901f\u5ea6\n        advice += '<li>\u5148\u4e0d\u8981\u8ffd\u6c42\u901f\u5ea6\uff0c\u91cd\u8981\u7684\u662f\u7406\u89e3\u984c\u76ee\u548c\u638c\u63e1\u89e3\u984c\u65b9\u6cd5\u3002<\/li>';\n    } else if (avgTimePerQuestion < 30) {\n        advice += '<li>\u60a8\u7b54\u984c\u901f\u5ea6\u8f03\u5feb\uff0c\u9019\u662f\u512a\u52e2\uff0c\u4f46\u4e5f\u8981\u78ba\u4fdd\u5728\u901f\u5ea6\u548c\u6e96\u78ba\u6027\u4e4b\u9593\u627e\u5230\u5e73\u8861\u9ede\u3002<\/li>';\n    } else if (avgTimePerQuestion > 60) {\n        advice += '<li>\u60a8\u7b54\u984c\u6bd4\u8f03\u8b39\u614e\uff0c\u9019\u5f88\u597d\uff0c\u540c\u6642\u53ef\u4ee5\u9069\u7576\u63d0\u9ad8\u6548\u7387\uff0c\u76f8\u4fe1\u81ea\u5df1\u7684\u5224\u65b7\u80fd\u529b\u3002<\/li>';\n    }\n    \n    \/\/ \u6839\u636e\u8868\u73b0\u6a21\u5f0f\u7ed9\u51fa\u9488\u5bf9\u6027\u5efa\u8bae\n    if (score === 0) {\n        advice += '<li>\u63a8\u85a6\u8cc7\u6e90\uff1a\u53ef\u4ee5\u5f9e\u5152\u7ae5\u76ca\u667a\u66f8\u7c4d\u958b\u59cb\uff0c\u6216\u4f7f\u7528\u7dda\u4e0a\u667a\u529b\u8a13\u7df4\u5e73\u53f0\u9032\u884c\u57fa\u790e\u7df4\u7fd2\u3002<\/li>';\n    } else if (strongCount === 0 && weakCount === 0 && score >= 60) {\n        advice += '<li>\u60a8\u5728\u5404\u9818\u57df\u7684\u8868\u73fe\u90fd\u6bd4\u8f03\u5747\u8861\uff0c\u9019\u662f\u5f88\u597d\u7684\u57fa\u790e\uff0c\u53ef\u4ee5\u6839\u64da\u8208\u8da3\u9078\u64c7\u91cd\u9ede\u767c\u5c55\u65b9\u5411\u3002<\/li>';\n    }\n    \n    advice += '<\/ul>';\n    return advice;\n}\n\n\/\/ \u7ed8\u5236\u56fe\u8868\nfunction drawCharts(score) {\n    \/\/ \u9500\u6bc1\u65e7\u56fe\u8868\n    Object.values(charts).forEach(chart => {\n        if (chart) chart.destroy();\n    });\n    \n    \/\/ \u8ba1\u7b97\u7edf\u8ba1\u6570\u636e\n    let correctCount = 0;\n    const categoryStats = {};\n    \n    questions.forEach((q, index) => {\n        \/\/ \u521d\u59cb\u5316\u7c7b\u522b\u7edf\u8ba1\n        if (!categoryStats[q.category]) {\n            categoryStats[q.category] = { total: 0, correct: 0 };\n        }\n        categoryStats[q.category].total++;\n        \n        \/\/ \u5224\u65ad\u662f\u5426\u7b54\u5bf9\n        let isCorrect = false;\n        if (q.type === 'choice') {\n            isCorrect = answers[index] === q.correct;\n        } else {\n            const userAnswer = normalizeAnswer(answers[index]);\n            const correctAnswer = normalizeAnswer(q.correct);\n            isCorrect = userAnswer === correctAnswer;\n        }\n        \n        if (isCorrect) {\n            correctCount++;\n            categoryStats[q.category].correct++;\n        }\n    });\n    \n    \/\/ \u997c\u56fe - \u7b54\u9898\u6b63\u786e\u7387\n    const ctx1 = document.getElementById('pieChart').getContext('2d');\n    charts.pie = new Chart(ctx1, {\n        type: 'doughnut',\n        data: {\n            labels: ['\u7b54\u5c0d', '\u7b54\u932f'],\n            datasets: [{\n                data: [correctCount, questions.length - correctCount],\n                backgroundColor: [\n                    'rgba(102, 126, 234, 0.8)',\n                    'rgba(255, 99, 132, 0.8)'\n                ],\n                borderColor: [\n                    'rgba(102, 126, 234, 1)',\n                    'rgba(255, 99, 132, 1)'\n                ],\n                borderWidth: 2\n            }]\n        },\n        options: {\n            responsive: true,\n            maintainAspectRatio: true,\n            plugins: {\n                legend: {\n                    position: 'bottom',\n                    labels: {\n                        padding: 20,\n                        font: {\n                            size: 14\n                        }\n                    }\n                },\n                tooltip: {\n                    callbacks: {\n                        label: function(context) {\n                            const label = context.label || '';\n                            const value = context.parsed;\n                            const percentage = ((value \/ questions.length) * 100).toFixed(1);\n                            return `${label}: ${value}\u984c (${percentage}%)`;\n                        }\n                    }\n                }\n            }\n        }\n    });\n    \n    \/\/ \u96f7\u8fbe\u56fe - \u5404\u7c7b\u522b\u8868\u73b0\n    const ctx2 = document.getElementById('radarChart').getContext('2d');\n    const categories = Object.keys(categoryStats);\n    const categoryScores = categories.map(cat => \n        (categoryStats[cat].correct \/ categoryStats[cat].total) * 100\n    );\n    \n    charts.radar = new Chart(ctx2, {\n        type: 'radar',\n        data: {\n            labels: categories,\n            datasets: [{\n                label: '\u6b63\u78ba\u7387',\n                data: categoryScores,\n                backgroundColor: 'rgba(118, 75, 162, 0.2)',\n                borderColor: 'rgba(118, 75, 162, 1)',\n                borderWidth: 2,\n                pointBackgroundColor: 'rgba(118, 75, 162, 1)',\n                pointBorderColor: '#fff',\n                pointHoverBackgroundColor: '#fff',\n                pointHoverBorderColor: 'rgba(118, 75, 162, 1)',\n                pointRadius: 5\n            }]\n        },\n        options: {\n            responsive: true,\n            maintainAspectRatio: true,\n            scales: {\n                r: {\n                    beginAtZero: true,\n                    max: 100,\n                    ticks: {\n                        stepSize: 20\n                    },\n                    grid: {\n                        color: 'rgba(0, 0, 0, 0.1)'\n                    },\n                    pointLabels: {\n                        font: {\n                            size: 12\n                        }\n                    }\n                }\n            },\n            plugins: {\n                legend: {\n                    display: false\n                },\n                tooltip: {\n                    callbacks: {\n                        label: function(context) {\n                            return `${context.label}: ${context.parsed.r.toFixed(1)}%`;\n                        }\n                    }\n                }\n            }\n        }\n    });\n}\n\n\/\/ \u91cd\u65b0\u6d4b\u8bd5\nfunction restartQuiz() {\n    \/\/ \u9500\u6bc1\u56fe\u8868\n    Object.values(charts).forEach(chart => {\n        if (chart) chart.destroy();\n    });\n    charts = {};\n    \n    \/\/ \u91cd\u7f6e\u72b6\u6001\n    currentQuestion = 0;\n    answers = new Array(30).fill(null);\n    timeLeft = 30 * 60;\n    \n    \/\/ \u5207\u6362\u9875\u9762\n    document.getElementById('resultPage').classList.remove('active');\n    document.getElementById('introPage').classList.add('active');\n}\n\n\/\/ \u9875\u9762\u52a0\u8f7d\u5b8c\u6210\u540e\u521d\u59cb\u5316\ndocument.addEventListener('DOMContentLoaded', function() {\n    \/\/ \u786e\u4fdd\u6240\u6709\u8f93\u5165\u6846\u6837\u5f0f\u6b63\u786e\n    const style = document.createElement('style');\n    style.textContent = `\n        #iqQuizContainer input.fill-input::-webkit-input-placeholder {\n            color: #999;\n            opacity: 0.5;\n        }\n        #iqQuizContainer input.fill-input::-moz-placeholder {\n            color: #999;\n            opacity: 0.5;\n        }\n        #iqQuizContainer input.fill-input:-ms-input-placeholder {\n            color: #999;\n            opacity: 0.5;\n        }\n        #iqQuizContainer input.fill-input::placeholder {\n            color: #999;\n            opacity: 0.5;\n        }\n    `;\n    document.head.appendChild(style);\n});\n<\/script>","protected":false},"excerpt":{"rendered":"<p>\u667a\u5546\u8868\u793a\u4eba\u7684\u806a\u660e\u7a0b\u5ea6\uff1a\u667a\u5546\u8d8a\u9ad8\uff0c\u5219\u8868\u793a\u8d8a\u806a\u660e\u3002\u60f3\u68c0\u9a8c\u81ea\u5df1\u7684\u667a\u5546\u662f\u591a\u5c11\u5417\uff1f\u8fd9\u5e76\u4e0d\u56f0\u96be\uff0c\u4ee5\u4e0b\u5c31\u662f\u4e00\u4f8b\u8f83\u6743\u5a01\u76841Q \u6d4b\u8bd5\u9898\uff0c\u8bf7\u572830\u5206\u949f\u5185\u5b8c\u6210\uff0c\u4e4b\u540e\u4f60\u5c31\u4f1a\u77e5\u9053\u81ea\u5df1\u7684IQ \u503c\u662f\u591a\u5c11\u4e86\u3002<\/p>","protected":false},"author":19,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"normal-width-container","site-content-style":"unboxed","site-sidebar-style":"default","ast-global-header-display":"disabled","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[177,159,166],"tags":[],"class_list":["post-2600","post","type-post","status-publish","format-standard","hentry","category-iq","category-aptitude","category-norm-referenced"],"_links":{"self":[{"href":"https:\/\/xinliceyan.org\/zh\/wp-json\/wp\/v2\/posts\/2600","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/xinliceyan.org\/zh\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/xinliceyan.org\/zh\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/xinliceyan.org\/zh\/wp-json\/wp\/v2\/users\/19"}],"replies":[{"embeddable":true,"href":"https:\/\/xinliceyan.org\/zh\/wp-json\/wp\/v2\/comments?post=2600"}],"version-history":[{"count":6,"href":"https:\/\/xinliceyan.org\/zh\/wp-json\/wp\/v2\/posts\/2600\/revisions"}],"predecessor-version":[{"id":10306,"href":"https:\/\/xinliceyan.org\/zh\/wp-json\/wp\/v2\/posts\/2600\/revisions\/10306"}],"wp:attachment":[{"href":"https:\/\/xinliceyan.org\/zh\/wp-json\/wp\/v2\/media?parent=2600"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/xinliceyan.org\/zh\/wp-json\/wp\/v2\/categories?post=2600"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/xinliceyan.org\/zh\/wp-json\/wp\/v2\/tags?post=2600"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}