{"id":2638,"date":"2023-10-18T09:48:04","date_gmt":"2023-10-18T01:48:04","guid":{"rendered":"https:\/\/bookmark.tw\/?p=2638"},"modified":"2025-06-09T20:21:10","modified_gmt":"2025-06-09T12:21:10","slug":"outgoing-reserved-personality","status":"publish","type":"post","link":"https:\/\/xinliceyan.org\/zh\/outgoing-reserved-personality","title":{"rendered":"\u6027\u683c(\u5916\u5411\u3001\u5185\u5411)\u7ebf\u4e0a\u514d\u8d39\u6d4b\u9a8c\uff0850\u9898\uff09"},"content":{"rendered":"<!-- CSS Dependencies -->\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\n<!-- \u5f15\u5c0e\u9801 -->\n<section id=\"quizintro9\" data-page=\"intro9\" class=\"py-5\">\n    <div class=\"container\" style=\"max-width: 750px;\">\n        <div class=\"row justify-content-center\">\n            <div class=\"col-12\">\n                <header class=\"text-center mb-5\">\n                    <h2 class=\"display-4 fw-bold text-success mb-3\">\u6027\u683c\u50be\u5411\u6027(\u5916\u56ae\u3001\u5167\u56ae)\u6e2c\u9a57<\/h2>\n                    <p class=\"lead text-muted\">\u63a2\u7d22\u4f60\u7684\u5167\u5728\u4e16\u754c &#8211; \u767c\u73fe\u771f\u5be6\u7684\u81ea\u5df1<\/p>\n                <\/header>\n                \n                <div class=\"row g-4 mb-5\">\n                    <div class=\"col-md-4 text-center\">\n                        <div class=\"bg-light rounded-circle d-inline-flex align-items-center justify-content-center mb-3\" style=\"width: 80px; height: 80px;\">\n                            <i class=\"bi bi-person-heart text-success fs-1\"><\/i>\n                        <\/div>\n                        <h5 class=\"fw-semibold\">\u6df1\u5ea6\u5206\u6790<\/h5>\n                        <p class=\"text-muted small\">\u57fa\u65bc\u69ae\u683c\u5fc3\u7406\u5b78\u7406\u8ad6\u7684\u79d1\u5b78\u6e2c\u9a57<\/p>\n                    <\/div>\n                    <div class=\"col-md-4 text-center\">\n                        <div class=\"bg-light rounded-circle d-inline-flex align-items-center justify-content-center mb-3\" style=\"width: 80px; height: 80px;\">\n                            <i class=\"bi bi-graph-up text-warning fs-1\"><\/i>\n                        <\/div>\n                        <h5 class=\"fw-semibold\">\u591a\u7ef4\u5206\u6790<\/h5>\n                        <p class=\"text-muted small\">\u5c08\u696d\u5716\u8868\u5448\u73fe\u4f60\u7684\u6027\u683c\u7279\u8cea<\/p>\n                    <\/div>\n                    <div class=\"col-md-4 text-center\">\n                        <div class=\"bg-light rounded-circle d-inline-flex align-items-center justify-content-center mb-3\" style=\"width: 80px; height: 80px;\">\n                            <i class=\"bi bi-lightbulb text-info fs-1\"><\/i>\n                        <\/div>\n                        <h5 class=\"fw-semibold\">\u500b\u4eba\u5efa\u8b70<\/h5>\n                        <p class=\"text-muted small\">\u91dd\u5c0d\u73fe\u4ee3\u751f\u6d3b\u7684\u500b\u4eba\u5316\u6307\u5c0e<\/p>\n                    <\/div>\n                <\/div>\n                \n                <div class=\"bg-light rounded-4 p-4 mb-4\">\n                    <h5 class=\"fw-semibold mb-3\">\n                        <i class=\"bi bi-info-circle text-info me-2\"><\/i>\u6e2c\u9a57\u8aaa\u660e\n                    <\/h5>\n                    <p class=\"mb-2\">\u5728\u9019\u500b\u4e16\u754c\u4e0a\uff0c\u6bcf\u500b\u4eba\u90fd\u662f\u7368\u4e00\u7121\u4e8c\u7684\u3002\u8457\u540d\u5fc3\u7406\u5b78\u5bb6\u69ae\u683c\u6839\u64da\u4eba\u7684\u5fc3\u614b\u6307\u5411\uff0c\u5c07\u6027\u683c\u5206\u70ba<strong>\u5167\u56ae\u578b<\/strong>\u8207<strong>\u5916\u56ae\u578b<\/strong>\u5169\u5927\u985e\u578b\u3002<\/p>\n                    <ul class=\"list-unstyled\">\n                        <li class=\"mb-2\"><i class=\"bi bi-check-circle text-success me-2\"><\/i><strong>\u5916\u56ae\u578b\uff1a<\/strong>\u6d3b\u6f51\u3001\u958b\u6717\u3001\u9748\u6d3b\uff0c\u5584\u65bc\u793e\u4ea4<\/li>\n                        <li class=\"mb-2\"><i class=\"bi bi-check-circle text-success me-2\"><\/i><strong>\u5167\u56ae\u578b\uff1a<\/strong>\u6587\u975c\u3001\u611b\u601d\u8003\u3001\u7d30\u7dfb\uff0c\u6df1\u5ea6\u4ea4\u6d41<\/li>\n                        <li class=\"mb-0\"><i class=\"bi bi-check-circle text-success me-2\"><\/i>\u672c\u6e2c\u9a57\u517150\u984c\uff0c\u7d04\u97005-8\u5206\u9418\u5b8c\u6210<\/li>\n                    <\/ul>\n                <\/div>\n                \n                <div class=\"text-center\">\n                    <button type=\"button\" class=\"btn btn-success btn-lg px-5 py-3 rounded-pill shadow-lg\" data-action=\"startQuiz\">\n                        <i class=\"bi bi-play-fill me-2\"><\/i>\u5f00\u59cb\u6d4b\u9a8c\n                    <\/button>\n                    <p class=\"text-muted small mt-3\">\u6e96\u5099\u597d\u63a2\u7d22\u4f60\u7684\u6027\u683c\u7279\u8cea\u4e86\u55ce\uff1f<\/p>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/section>\n\n<!-- \u6e2c\u9a57\u9801 -->\n<section id=\"quizmain9\" data-page=\"quiz9\" class=\"py-5 d-none\">\n    <div class=\"container\" style=\"max-width: 750px;\">\n        <div class=\"row justify-content-center\">\n            <div class=\"col-12\">\n                <header class=\"text-center mb-4\">\n                    <h2 class=\"h3 text-success mb-2\">\u6027\u683c\u50be\u5411\u6027(\u5916\u56ae\u3001\u5167\u56ae)\u6e2c\u9a57<\/h2>\n                    <div class=\"progress mb-3\" style=\"height: 8px;\">\n                        <div class=\"progress-bar bg-success progress-bar-striped progress-bar-animated\" \n                             role=\"progressbar\" style=\"width: 2%;\" aria-valuenow=\"1\" aria-valuemin=\"0\" aria-valuemax=\"50\"><\/div>\n                    <\/div>\n                    <p class=\"text-muted small mb-0\" aria-live=\"polite\">\n                        <span data-current-question>1<\/span> \/ 50 \u984c\n                    <\/p>\n                <\/header>\n                \n                <main>\n                    <div class=\"mb-4\">\n                        <h3 class=\"fw-bold mb-4 text-center\" style=\"font-size: 22px;\" data-question-text aria-live=\"polite\">\n                            \u4e0e\u89c2\u70b9\u4e0d\u540c\u7684\u4eba\u4e5f\u80fd\u53cb\u597d\u5f80\u6765\u3002\n                        <\/h3>\n                        \n                        <div class=\"d-grid gap-3\" data-options-container role=\"radiogroup\" aria-labelledby=\"question-text\">\n                            <!-- \u9078\u9805\u5361\u7247\u5c07\u7531 JavaScript \u52d5\u614b\u751f\u6210 -->\n                        <\/div>\n                    <\/div>\n                    \n                    <div class=\"text-center mt-4\">\n                        <button type=\"button\" class=\"btn btn-secondary d-none\" data-action=\"prevQuestion\">\n                            <i class=\"bi bi-arrow-left me-2\"><\/i>\u4e0a\u4e00\u9898\n                        <\/button>\n                    <\/div>\n                <\/main>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/section>\n\n<!-- \u7d50\u679c\u9801 -->\n<section id=\"quizresult9\" data-page=\"result9\" class=\"py-5 d-none\">\n    <div class=\"container\" style=\"max-width: 750px;\">\n        <div class=\"row justify-content-center\">\n            <div class=\"col-12\">\n                <header class=\"text-center mb-5\">\n                    <h2 class=\"display-5 fw-bold text-success mb-3\" aria-live=\"polite\">\u4f60\u7684\u6027\u683c\u5206\u6790\u7d50\u679c<\/h2>\n                    <p class=\"lead text-muted\">\u57fa\u65bc50\u984c\u5c08\u696d\u6e2c\u9a57\u7684\u6df1\u5ea6\u5206\u6790<\/p>\n                <\/header>\n                \n                <!-- \u4e3b\u8981\u7d50\u679c -->\n                <div class=\"card border-0 shadow-sm mb-4\">\n                    <div class=\"card-body text-center p-4\">\n                        <div class=\"bg-success bg-opacity-10 rounded-circle d-inline-flex align-items-center justify-content-center mb-3\" \n                             style=\"width: 80px; height: 80px;\">\n                            <i class=\"bi bi-person-badge text-success fs-1\" data-result-icon><\/i>\n                        <\/div>\n                        <h4 class=\"fw-bold text-success mb-2\" data-result-title>\u6027\u683c\u985e\u578b<\/h4>\n                        <p class=\"h5 mb-0\" data-result-type>\u4e2d\u9593\u578b<\/p>\n                    <\/div>\n                <\/div>\n                \n                <!-- \u6027\u683c\u5206\u5e03\u5716\u8868 -->\n                <div class=\"card border-0 shadow-sm mb-4\">\n                    <div class=\"card-body p-4\">\n                        <h5 class=\"fw-semibold mb-4 text-center\">\u4f60\u5728\u6027\u683c\u5206\u5e03\u4e2d\u7684\u4f4d\u7f6e<\/h5>\n                        <div class=\"position-relative\" style=\"height: 200px;\">\n                            <canvas id=\"personalityChart\" width=\"700\" height=\"200\"><\/canvas>\n                        <\/div>\n                    <\/div>\n                <\/div>\n                \n                <!-- \u591a\u7dad\u5206\u6790 -->\n                <div class=\"card border-0 shadow-sm mb-4\">\n                    <div class=\"card-body p-4\">\n                        <h4 class=\"fw-bold mb-4\">\n                            <i class=\"bi bi-pie-chart text-success me-2\"><\/i>\u591a\u7dad\u6027\u683c\u5206\u6790\n                        <\/h4>\n                        <div class=\"row g-3\" data-dimension-analysis>\n                            <!-- \u591a\u7dad\u5206\u6790\u5c07\u7531 JavaScript \u52d5\u614b\u751f\u6210 -->\n                        <\/div>\n                    <\/div>\n                <\/div>\n                \n                <!-- \u8a73\u7d30\u5206\u6790 -->\n                <div class=\"card border-0 shadow-sm mb-4\">\n                    <div class=\"card-body p-4\">\n                        <h4 class=\"fw-bold mb-4\">\n                            <i class=\"bi bi-clipboard-data text-success me-2\"><\/i>\u8be6\u7ec6\u5206\u6790\n                        <\/h4>\n                        <div data-result-description>\n                            <p>\u9019\u6a23\u7684\u6027\u683c\u9069\u61c9\u6027\u5f37\uff0c\u80fd\u5728\u4e0d\u540c\u60c5\u5883\u4e2d\u8abf\u6574\u81ea\u5df1\u7684\u8868\u73fe\u65b9\u5f0f&#8230;<\/p>\n                        <\/div>\n                    <\/div>\n                <\/div>\n                \n                <!-- \u500b\u6027\u5316\u5efa\u8b70 -->\n                <div class=\"card border-0 shadow-sm mb-4\">\n                    <div class=\"card-body p-4\">\n                        <h4 class=\"fw-bold mb-4\">\n                            <i class=\"bi bi-lightbulb text-success me-2\"><\/i>\u500b\u6027\u5316\u5efa\u8b70\n                        <\/h4>\n                        <div data-personalized-advice>\n                            <!-- \u500b\u6027\u5316\u5efa\u8b70\u5c07\u7531 JavaScript \u52d5\u614b\u751f\u6210 -->\n                        <\/div>\n                    <\/div>\n                <\/div>\n                \n                <div class=\"text-center mt-5\">\n                    <button type=\"button\" class=\"btn btn-success btn-lg px-5 py-3 rounded-pill shadow-lg\" data-action=\"retakeQuiz\">\n                        <i class=\"bi bi-arrow-clockwise me-2\"><\/i>\u91cd\u65b0\u6d4b\u9a8c\n                    <\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/section>\n\n<style>\n\/* \u81ea\u5b9a\u7fa9\u6a23\u5f0f *\/\n.option-card {\n    cursor: pointer;\n    transition: all 0.2s ease;\n    border: 2px solid #e9ecef !important;\n    background-color: #fff;\n    min-height: 60px;\n}\n\n.option-card:hover {\n    transform: translateY(-2px);\n    border-color: #28a745 !important;\n    box-shadow: 0 4px 12px rgba(40, 167, 69, 0.15);\n    background-color: #fff;\n}\n\n.option-card:focus {\n    outline: 2px solid #28a745;\n    outline-offset: 2px;\n}\n\n.option-card.selected {\n    background-color: #28a745 !important;\n    border-color: #28a745 !important;\n    color: white !important;\n}\n\n.option-card.selected:hover {\n    background-color: #28a745 !important;\n    color: white !important;\n}\n\n.option-card.selected .text-muted {\n    color: rgba(255, 255, 255, 0.8) !important;\n}\n\n.option-indicator {\n    width: 24px;\n    height: 24px;\n    border: 2px solid #dee2e6;\n    border-radius: 50%;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    transition: all 0.2s ease;\n    flex-shrink: 0;\n}\n\n.option-card:hover .option-indicator {\n    border-color: #28a745;\n}\n\n.option-card.selected .option-indicator {\n    background-color: white;\n    border-color: white;\n}\n\n.option-indicator i {\n    font-size: 14px;\n    color: transparent;\n    transition: color 0.2s ease;\n}\n\n.option-card.selected .option-indicator i {\n    color: #28a745;\n}\n\n.dimension-bar {\n    background-color: #e9ecef;\n    height: 8px;\n    border-radius: 4px;\n    overflow: hidden;\n}\n\n.dimension-fill {\n    height: 100%;\n    border-radius: 4px;\n    transition: width 0.8s ease;\n}\n\n.section-transition {\n    transition: opacity 0.3s ease-in-out;\n}\n\n@media (max-width: 768px) {\n    .display-4 {\n        font-size: 2.5rem;\n    }\n    \n    .btn-lg {\n        min-height: 44px;\n        min-width: 44px;\n    }\n    \n    .option-card {\n        min-height: 60px;\n    }\n}\n<\/style>\n\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/Chart.js\/4.4.1\/chart.umd.min.js\"><\/script>\n<script>\n(() => {\n    'use strict';\n    \n    \/\/ \u6e2c\u9a57\u984c\u76ee\u6578\u64da\n    const quizData = [\n        { question: \"\u8207\u89c0\u9ede\u4e0d\u540c\u7684\u4eba\u4e5f\u80fd\u53cb\u597d\u5f80\u4f86\u3002\", isOdd: true, category: 'social' },\n        { question: \"\u4f60\u8b80\u66f8\u8f03\u6162\uff0c\u529b\u6c42\u5b8c\u5168\u770b\u61c2\u3002\", isOdd: false, category: 'thinking' },\n        { question: \"\u4f60\u505a\u4e8b\u8f03\u5feb\uff0c\u4f46\u8f03\u7c97\u7cd9\u3002\", isOdd: true, category: 'action' },\n        { question: \"\u4f60\u7d93\u5e38\u5206\u6790\u81ea\u5df1\u3001\u7814\u7a76\u81ea\u5df1\u3002\", isOdd: false, category: 'self_reflection' },\n        { question: \"\u751f\u6c23\u6642\uff0c\u4f60\u7e3d\u4e0d\u52a0\u6291\u5236\u5730\u628a\u6012\u6c23\u767c\u6d29\u51fa\u4f86\u3002\", isOdd: true, category: 'emotion' },\n        { question: \"\u5728\u4eba\u591a\u7684\u5834\u5408\u4f60\u7e3d\u662f\u529b\u6c42\u4e0d\u5f15\u4eba\u6ce8\u610f\u3002\", isOdd: false, category: 'social' },\n        { question: \"\u4f60\u4e0d\u559c\u6b61\u8a18\u9304\u500b\u4eba\u751f\u6d3b\uff08\u65e5\u8a18\u3001\u793e\u7fa4\u5a92\u9ad4\u7b49\uff09\u3002\", isOdd: true, category: 'self_reflection' },\n        { question: \"\u4f60\u5f85\u4eba\u7e3d\u662f\u5f88\u5c0f\u5fc3\u3002\", isOdd: false, category: 'social' },\n        { question: \"\u4f60\u662f\u500b\u4e0d\u62d8\u5c0f\u7bc0\u7684\u4eba\u3002\", isOdd: true, category: 'action' },\n        { question: \"\u4f60\u4e0d\u6562\u5728\u773e\u4eba\u9762\u524d\u767c\u8868\u6f14\u8aaa\u6216\u5728\u8996\u8a0a\u6703\u8b70\u4e2d\u767c\u8a00\u3002\", isOdd: false, category: 'social' },\n        { question: \"\u4f60\u80fd\u5920\u505a\u597d\u9818\u5c0e\u5718\u9ad4\u7684\u5de5\u4f5c\u3002\", isOdd: true, category: 'leadership' },\n        { question: \"\u4f60\u5e38\u6703\u61f7\u7591\u5225\u4eba\u3002\", isOdd: false, category: 'trust' },\n        { question: \"\u53d7\u5230\u8868\u63da\u5f8c\u4f60\u6703\u5de5\u4f5c\u5f97\u66f4\u52aa\u529b\u3002\", isOdd: true, category: 'motivation' },\n        { question: \"\u4f60\u5e0c\u671b\u904e\u5e73\u975c\u3001\u8f15\u677e\u7684\u751f\u6d3b\u3002\", isOdd: false, category: 'lifestyle' },\n        { question: \"\u4f60\u5f9e\u4e0d\u8003\u616e\u81ea\u5df1\u5e7e\u5e74\u5f8c\u7684\u4e8b\u60c5\u3002\", isOdd: true, category: 'planning' },\n        { question: \"\u4f60\u5e38\u6703\u4e00\u500b\u4eba\u80e1\u601d\u4e82\u60f3\u3002\", isOdd: false, category: 'thinking' },\n        { question: \"\u4f60\u559c\u6b61\u5617\u8a66\u4e0d\u540c\u7684\u5de5\u4f5c\u6216\u6311\u6230\u3002\", isOdd: true, category: 'adventure' },\n        { question: \"\u4f60\u5e38\u5e38\u56de\u61b6\u81ea\u5df1\u904e\u53bb\u7684\u751f\u6d3b\u3002\", isOdd: false, category: 'self_reflection' },\n        { question: \"\u4f60\u5f88\u559c\u6b61\u53c3\u52a0\u805a\u6703\u6d3b\u52d5\uff08\u5be6\u9ad4\u6216\u7dda\u4e0a\uff09\u3002\", isOdd: true, category: 'social' },\n        { question: \"\u4f60\u7e3d\u662f\u4e09\u601d\u800c\u5f8c\u884c\u3002\", isOdd: false, category: 'thinking' },\n        { question: \"\u4f7f\u7528\u91d1\u9322\u6642\u4f60\u5f9e\u4e0d\u7cbe\u6253\u7d30\u7b97\u3002\", isOdd: true, category: 'planning' },\n        { question: \"\u4f60\u8a0e\u53ad\u5728\u5de5\u4f5c\u6642\u6709\u4eba\u76e3\u7763\u6216\u89c0\u770b\uff08\u5305\u62ec\u8996\u8a0a\u76e3\u7763\uff09\u3002\", isOdd: false, category: 'independence' },\n        { question: \"\u4f60\u59cb\u7d42\u4ee5\u6a02\u89c0\u7684\u614b\u5ea6\u5c0d\u5f85\u4eba\u751f\u3002\", isOdd: true, category: 'emotion' },\n        { question: \"\u4f60\u7e3d\u662f\u7368\u7acb\u601d\u8003\u56de\u7b54\u554f\u984c\u3002\", isOdd: false, category: 'thinking' },\n        { question: \"\u4f60\u4e0d\u6015\u61c9\u4ed8\u9ebb\u7169\u7684\u4e8b\u60c5\u3002\", isOdd: true, category: 'action' },\n        { question: \"\u5c0d\u964c\u751f\u4eba\u4f60\u5f9e\u4e0d\u8f15\u6613\u76f8\u4fe1\u3002\", isOdd: false, category: 'trust' },\n        { question: \"\u4f60\u5e7e\u4e4e\u5f9e\u4e0d\u4e3b\u52d5\u8a02\u5b78\u7fd2\u6216\u5de5\u4f5c\u8a08\u5283\u3002\", isOdd: true, category: 'planning' },\n        { question: \"\u4f60\u4e0d\u5584\u65bc\u7d50\u4ea4\u670b\u53cb\u3002\", isOdd: false, category: 'social' },\n        { question: \"\u4f60\u7684\u610f\u898b\u548c\u89c0\u9ede\u5e38\u6703\u767c\u751f\u8b8a\u5316\u3002\", isOdd: true, category: 'flexibility' },\n        { question: \"\u4f60\u5f88\u6ce8\u610f\u4ea4\u901a\u5b89\u5168\u3002\", isOdd: false, category: 'caution' },\n        { question: \"\u4f60\u809a\u88e1\u6709\u8a71\u85cf\u4e0d\u4f4f\uff0c\u7e3d\u60f3\u5c0d\u4eba\u8aaa\u51fa\u4f86\u3002\", isOdd: true, category: 'expression' },\n        { question: \"\u4f60\u5e38\u6709\u81ea\u5351\u611f\u3002\", isOdd: false, category: 'self_confidence' },\n        { question: \"\u4f60\u4e0d\u5927\u6703\u6ce8\u610f\u81ea\u5df1\u7684\u670d\u88dd\u662f\u5426\u6574\u6f54\u3002\", isOdd: true, category: 'detail' },\n        { question: \"\u4f60\u5f88\u6703\u95dc\u5fc3\u5225\u4eba\u6703\u5c0d\u4f60\u6709\u4ec0\u9ebc\u770b\u6cd5\u3002\", isOdd: false, category: 'social_awareness' },\n        { question: \"\u548c\u5225\u4eba\u5728\u4e00\u8d77\u6642\uff0c\u4f60\u7684\u8a71\u7e3d\u6bd4\u5225\u4eba\u591a\u3002\", isOdd: true, category: 'expression' },\n        { question: \"\u4f60\u559c\u6b61\u7368\u81ea\u4e00\u500b\u4eba\u5728\u623f\u5167\u4f11\u606f\u3002\", isOdd: false, category: 'solitude' },\n        { question: \"\u4f60\u7684\u60c5\u7dd2\u5f88\u5bb9\u6613\u6ce2\u52d5\u3002\", isOdd: true, category: 'emotion' },\n        { question: \"\u770b\u5230\u623f\u9593\u88e1\u96dc\u4e82\u7121\u7ae0\uff0c\u4f60\u5c31\u975c\u4e0d\u4e0b\u5fc3\u4f86\u3002\", isOdd: false, category: 'order' },\n        { question: \"\u9047\u5230\u4e0d\u61c2\u7684\u554f\u984c\u4f60\u6703\u4e3b\u52d5\u8a62\u554f\u5225\u4eba\u6216\u4e0a\u7db2\u641c\u5c0b\u3002\", isOdd: true, category: 'learning' },\n        { question: \"\u65c1\u908a\u82e5\u6709\u624b\u6a5f\u901a\u77e5\u8072\u6216\u5f71\u7247\u8072\u97f3\uff0c\u4f60\u7e3d\u7121\u6cd5\u975c\u4e0b\u5fc3\u4f86\u5b78\u7fd2\u3002\", isOdd: false, category: 'focus' },\n        { question: \"\u4f60\u7684\u53e3\u982d\u8868\u9054\u80fd\u529b\u9084\u4e0d\u932f\u3002\", isOdd: true, category: 'expression' },\n        { question: \"\u4f60\u662f\u4e00\u500b\u6c89\u9ed8\u5be1\u8a00\u7684\u4eba\u3002\", isOdd: false, category: 'expression' },\n        { question: \"\u5728\u4e00\u500b\u65b0\u7684\u74b0\u5883\u88e1\u4f60\u5f88\u5feb\u5c31\u80fd\u9069\u61c9\u3002\", isOdd: true, category: 'adaptability' },\n        { question: \"\u8981\u4f60\u540c\u964c\u751f\u4eba\u6253\u4ea4\u9053\uff0c\u5e38\u611f\u5230\u70ba\u96e3\u3002\", isOdd: false, category: 'social' },\n        { question: \"\u5e38\u6703\u904e\u9ad8\u5730\u4f30\u8a08\u81ea\u5df1\u7684\u80fd\u529b\u3002\", isOdd: true, category: 'self_confidence' },\n        { question: \"\u906d\u5230\u5931\u6557\u5f8c\u4f60\u7e3d\u662f\u5fd8\u4e0d\u4e86\u3002\", isOdd: false, category: 'resilience' },\n        { question: \"\u4f60\u611f\u5230\u8173\u8e0f\u5be6\u5730\u5730\u505a\u6bd4\u63a2\u7d22\u7406\u8ad6\u539f\u7406\u66f4\u91cd\u8981\u3002\", isOdd: true, category: 'practical' },\n        { question: \"\u4f60\u5f88\u6ce8\u610f\u540c\u4f34\u5011\u7684\u5de5\u4f5c\u6216\u5b78\u7fd2\u6210\u7e3e\u3002\", isOdd: false, category: 'social_awareness' },\n        { question: \"\u6bd4\u8d77\u770b\u5c0f\u8aaa\u548c\u96fb\u5f71\u4f86\uff0c\u4f60\u66f4\u559c\u6b61\u6236\u5916\u6d3b\u52d5\u548c\u805a\u6703\u3002\", isOdd: true, category: 'activity_preference' },\n        { question: \"\u8cb7\u6771\u897f\u6642\uff0c\u4f60\u5e38\u5e38\u7336\u8c6b\u4e0d\u6c7a\u3002\", isOdd: false, category: 'decision_making' }\n    ];\n\n    \/\/ \u7d50\u679c\u5206\u6790\u6578\u64da\n    const resultAnalysis = {\n        '0-19': {\n            title: '\u6027\u683c\u5167\u56ae',\n            type: '\u5167\u56ae\u578b',\n            icon: 'bi-person-heart',\n            color: '#6f42c1',\n            description: '\u5167\u56ae\u578b\u6027\u683c\u7684\u4eba\u6700\u5927\u7279\u9ede\u662f\u5c0d\u4ea4\u969b\u6d3b\u52d5\u8f03\u70ba\u8b39\u614e\uff0c\u8207\u4e00\u822c\u4eba\u95dc\u4fc2\u8f03\u6df1\u4f46\u5708\u5b50\u8f03\u5c0f\uff0c\u559c\u6b61\u7cbe\u9078\u5c11\u6578\u670b\u53cb\u6df1\u5ea6\u4ea4\u5f80\u3002\u5167\u56ae\u578b\u6027\u683c\u7684\u4eba\u61c9\u8a72\u5584\u7528\u81ea\u5df1\u6df1\u5ea6\u601d\u8003\u7684\u512a\u52e2\uff0c\u5728\u6578\u4f4d\u6642\u4ee3\u53ef\u900f\u904e\u7dda\u4e0a\u5e73\u53f0\u9010\u6b65\u64f4\u5c55\u8212\u9069\u7684\u793e\u4ea4\u5708\uff0c\u4f46\u4e0d\u8981\u6a21\u4eff\u5916\u56ae\u578b\u7684\u6d6e\u8e81\u548c\u7c97\u7cd9\u7b49\u77ed\u8655\uff0c\u8981\u767c\u63ee\u81ea\u5df1\u8aa0\u5be6\u3001\u56b4\u8b39\u548c\u7a69\u91cd\u7684\u9577\u8655\uff0c\u5805\u6301\u81ea\u5df1\u7684\u7bc0\u594f\u3002'\n        },\n        '20-39': {\n            title: '\u6027\u683c\u504f\u5167\u56ae',\n            type: '\u504f\u5167\u56ae\u578b',\n            icon: 'bi-person-check',\n            color: '#0dcaf0',\n            description: '\u505a\u4e8b\u6709\u5fb9\u5e95\u5b8c\u6210\u6216\u5fb9\u5e95\u5f04\u6e05\u7684\u50be\u5411\uff0c\u8a0e\u53ad\u505a\u4e8b\u6577\u884d\u4e86\u4e8b\u3001\u542b\u7cca\u5176\u8fad\u3002\u9019\u662f\u503c\u5f97\u5c0a\u91cd\u7684\u54c1\u683c\uff0c\u61c9\u8a72\u4fdd\u6301\u3002\u4f46\u5982\u679c\u904e\u5ea6\u62d8\u6ce5\u65bc\u4e00\u4e8b\u7684\u5b8c\u7f8e\uff0c\u5c31\u5bb9\u6613\u5ffd\u8996\u5468\u570d\u7684\u8b8a\u5316\uff0c\u5728\u5feb\u901f\u8b8a\u9077\u7684\u73fe\u4ee3\u793e\u6703\u4e2d\u53ef\u80fd\u6703\u932f\u5931\u6a5f\u6703\u3002\u5efa\u8b70\u9069\u5ea6\u63d0\u5347\u5c0d\u74b0\u5883\u8b8a\u5316\u7684\u654f\u611f\u5ea6\u3002'\n        },\n        '40-59': {\n            title: '\u4e2d\u9593\u578b\uff08\u6df7\u5408\u578b\uff09',\n            type: '\u4e2d\u9593\u578b',\n            icon: 'bi-person-badge',\n            color: '#28a745',\n            description: '\u9019\u6a23\u7684\u6027\u683c\u9069\u61c9\u6027\u5f37\uff0c\u80fd\u5728\u4e0d\u540c\u60c5\u5883\u4e2d\u8abf\u6574\u81ea\u5df1\u7684\u8868\u73fe\u65b9\u5f0f\u3002\u5728\u591a\u5143\u5316\u7684\u73fe\u4ee3\u793e\u6703\u4e2d\uff0c\u9019\u7a2e\u5f48\u6027\u662f\u5f88\u5927\u7684\u512a\u52e2\u3002\u4f46\u5982\u679c\u7e3d\u662f\u8b93\u4eba\u611f\u89ba\u4e0d\u6eab\u4e0d\u706b\uff0c\u53ef\u80fd\u6703\u5728\u7af6\u722d\u6fc0\u70c8\u7684\u74b0\u5883\u4e2d\u7f3a\u4e4f\u8fa8\u8b58\u5ea6\u3002\u5efa\u8b70\u6839\u64da\u91cd\u8981\u5834\u5408\u7684\u9700\u8981\uff0c\u9069\u6642\u5c55\u73fe\u66f4\u9bae\u660e\u7684\u500b\u4eba\u7279\u8272\u3002'\n        },\n        '60-79': {\n            title: '\u6027\u683c\u504f\u5916\u56ae',\n            type: '\u504f\u5916\u56ae\u578b',\n            icon: 'bi-person-plus',\n            color: '#fd7e14',\n            description: '\u9019\u7a2e\u6027\u683c\u985e\u578b\u7684\u9577\u8655\u662f\u80fd\u5920\u5b8f\u89c0\u5730\u601d\u8003\u3001\u89c0\u5bdf\u4e8b\u7269\uff0c\u5584\u65bc\u638c\u63e1\u5927\u65b9\u5411\u3002\u4e0d\u62d8\u6ce5\u65bc\u7d30\u679d\u672b\u7bc0\u7576\u7136\u6709\u5176\u50f9\u503c\uff0c\u4f46\u5728\u9700\u8981\u7cbe\u6e96\u57f7\u884c\u7684\u73fe\u4ee3\u5de5\u4f5c\u74b0\u5883\u4e2d\uff0c\u6709\u6642\u4e5f\u6703\u56e0\u5ffd\u8996\u91cd\u8981\u7d30\u7bc0\u800c\u9020\u6210\u554f\u984c\u3002\u5efa\u8b70\u5728\u91cd\u8981\u5c08\u6848\u4e2d\u591a\u82b1\u6642\u9593\u6aa2\u8996\u7d30\u7bc0\u3002'\n        },\n        '80-100': {\n            title: '\u6027\u683c\u5916\u56ae',\n            type: '\u5916\u56ae\u578b',\n            icon: 'bi-person-arms-up',\n            color: '#dc3545',\n            description: '\u5916\u56ae\u578b\u6027\u683c\u7684\u4eba\u505a\u4e8b\u7a4d\u6975\u4e3b\u52d5\uff0c\u9019\u662f\u5f88\u5927\u7684\u512a\u52e2\uff0c\u7279\u5225\u9069\u5408\u73fe\u4ee3\u5feb\u7bc0\u594f\u7684\u5de5\u4f5c\u74b0\u5883\u3002\u4f46\u4e0d\u8db3\u4e4b\u8655\u662f\uff0c\u6709\u6642\u53ef\u80fd\u56e0\u70ba\u6025\u65bc\u6c42\u6210\u6216\u6ce8\u610f\u529b\u8f49\u79fb\u800c\u534a\u9014\u800c\u5ee2\uff0c\u6216\u4e00\u9805\u5de5\u4f5c\u6c92\u5b8c\u6210\u5c31\u8f49\u5411\u5176\u4ed6\u5de5\u4f5c\u3002\u5728\u8cc7\u8a0a\u7206\u70b8\u7684\u6642\u4ee3\u66f4\u9700\u8981\u57f9\u990a\u5c08\u6ce8\u529b\u548c\u6301\u7e8c\u529b\uff0c\u5efa\u8b70\u904b\u7528\u6642\u9593\u7ba1\u7406\u5de5\u5177\u4f86\u6539\u5584\u9019\u500b\u5f31\u9ede\u3002'\n        }\n    };\n\n    \/\/ \u7dad\u5ea6\u5206\u6790\u914d\u7f6e\n    const dimensionConfig = {\n        social: { name: '\u793e\u4ea4\u50be\u5411', icon: 'bi-people', color: '#0d6efd' },\n        thinking: { name: '\u601d\u8003\u6df1\u5ea6', icon: 'bi-brain', color: '#6f42c1' },\n        action: { name: '\u884c\u52d5\u529b', icon: 'bi-lightning', color: '#fd7e14' },\n        emotion: { name: '\u60c5\u7dd2\u8868\u9054', icon: 'bi-heart', color: '#dc3545' },\n        independence: { name: '\u7368\u7acb\u6027', icon: 'bi-person-standing', color: '#20c997' },\n        adaptability: { name: '\u9069\u61c9\u529b', icon: 'bi-arrow-repeat', color: '#0dcaf0' }\n    };\n\n    class PersonalityQuiz {\n        constructor() {\n            this.currentQuestion = 0;\n            this.answers = [];\n            this.rawAnswers = [];\n            this.totalScore = 0;\n            this.chart = null;\n            this.dimensionScores = {};\n            \n            this.initializeElements();\n            this.bindEvents();\n        }\n        \n        initializeElements() {\n            \/\/ \u5feb\u53d6 DOM \u5143\u7d20\n            this.introSection = document.getElementById('quizintro9');\n            this.quizSection = document.getElementById('quizmain9');\n            this.resultSection = document.getElementById('quizresult9');\n            \n            \/\/ \u6e2c\u9a57\u9801\u9762\u5143\u7d20\n            this.progressBar = this.quizSection.querySelector('.progress-bar');\n            this.currentQuestionElement = this.quizSection.querySelector('[data-current-question]');\n            this.questionTextElement = this.quizSection.querySelector('[data-question-text]');\n            this.optionsContainer = this.quizSection.querySelector('[data-options-container]');\n            this.prevButton = this.quizSection.querySelector('[data-action=\"prevQuestion\"]');\n            \n            \/\/ \u7d50\u679c\u9801\u9762\u5143\u7d20\n            this.resultTitle = this.resultSection.querySelector('[data-result-title]');\n            this.resultType = this.resultSection.querySelector('[data-result-type]');\n            this.resultIcon = this.resultSection.querySelector('[data-result-icon]');\n            this.resultDescription = this.resultSection.querySelector('[data-result-description]');\n            this.dimensionAnalysis = this.resultSection.querySelector('[data-dimension-analysis]');\n            this.personalizedAdvice = this.resultSection.querySelector('[data-personalized-advice]');\n            \n            \/\/ Chart.js \u756b\u5e03\u5143\u7d20\n            this.chartCanvas = document.getElementById('personalityChart');\n            \n            \/\/ \u70ba\u554f\u984c\u6587\u5b57\u6dfb\u52a0id\u4ee5\u4fbfaria-describedby\u5f15\u7528\n            this.questionTextElement.id = 'question-text';\n        }\n        \n        bindEvents() {\n            \/\/ \u4f7f\u7528\u4e8b\u4ef6\u59d4\u8a17\n            document.addEventListener('click', this.handleClick.bind(this));\n        }\n        \n        handleClick(event) {\n            const target = event.target.closest('[data-action], .option-card');\n            if (!target) return;\n            \n            const action = target.dataset.action;\n            \n            if (action === 'startQuiz') {\n                this.startQuiz();\n            } else if (action === 'prevQuestion') {\n                this.goToPreviousQuestion();\n            } else if (action === 'retakeQuiz') {\n                this.resetQuiz();\n            } else if (target.classList.contains('option-card')) {\n                this.selectOption(target);\n            }\n        }\n        \n        startQuiz() {\n            this.showSection(this.quizSection);\n            this.loadQuestion();\n        }\n        \n        loadQuestion() {\n            const questionData = quizData[this.currentQuestion];\n            \n            \/\/ \u66f4\u65b0\u554f\u984c\u6587\u5b57\n            this.questionTextElement.textContent = questionData.question;\n            \n            \/\/ \u66f4\u65b0\u9032\u5ea6\n            this.currentQuestionElement.textContent = this.currentQuestion + 1;\n            const progress = ((this.currentQuestion + 1) \/ quizData.length) * 100;\n            this.progressBar.style.width = `${progress}%`;\n            this.progressBar.setAttribute('aria-valuenow', this.currentQuestion + 1);\n            \n            \/\/ \u5275\u5efa\u9078\u9805\u5361\u7247\n            this.createOptionCards();\n            \n            \/\/ \u986f\u793a\/\u96b1\u85cf\u4e0a\u4e00\u984c\u6309\u9215\n            if (this.currentQuestion > 0) {\n                this.prevButton.classList.remove('d-none');\n            } else {\n                this.prevButton.classList.add('d-none');\n            }\n            \n            \/\/ \u6efe\u52d5\u5230\u6a19\u984c\n            this.scrollToTop();\n        }\n        \n        createOptionCards() {\n            const options = [\n                { text: '\u662f', value: 2, variant: 'success' },\n                { text: '\u4e0d\u78ba\u5b9a', value: 1, variant: 'warning' },\n                { text: '\u5426', value: 0, variant: 'danger' }\n            ];\n            \n            this.optionsContainer.innerHTML = options.map((option, index) => `\n                <button type=\"button\" class=\"btn option-card w-100 text-start\" \n                        data-value=\"${option.value}\" \n                        data-option=\"${String.fromCharCode(65 + index)}\"\n                        role=\"radio\" \n                        aria-checked=\"false\"\n                        aria-describedby=\"question-text\">\n                    <div class=\"py-2 px-3\">\n                        <div class=\"d-flex align-items-center\">\n                            <div class=\"option-indicator me-3\" aria-hidden=\"true\">\n                                <i class=\"bi bi-check\"><\/i>\n                            <\/div>\n                            <span class=\"fw-medium\" style=\"font-size: 18px;\">${option.text}<\/span>\n                        <\/div>\n                    <\/div>\n                <\/button>\n            `).join('');\n        }\n        \n        selectOption(selectedCard) {\n            \/\/ \u79fb\u9664\u5176\u4ed6\u9078\u9805\u7684\u9078\u4e2d\u72c0\u614b\n            this.optionsContainer.querySelectorAll('.option-card').forEach(card => {\n                card.classList.remove('selected');\n                card.setAttribute('aria-checked', 'false');\n            });\n            \n            \/\/ \u8a2d\u7f6e\u9078\u4e2d\u72c0\u614b\n            selectedCard.classList.add('selected');\n            selectedCard.setAttribute('aria-checked', 'true');\n            \n            \/\/ \u8a18\u9304\u7b54\u6848\n            const value = parseInt(selectedCard.dataset.value);\n            const questionData = quizData[this.currentQuestion];\n            \n            \/\/ \u78ba\u4fddvalue\u662f\u6709\u6548\u6578\u5b57\n            if (isNaN(value)) {\n                console.warn('Invalid answer value:', selectedCard.dataset.value);\n                return;\n            }\n            \n            \/\/ \u5132\u5b58\u539f\u59cb\u7b54\u6848 (\u7528\u65bc\u591a\u7dad\u5206\u6790)\n            this.rawAnswers[this.currentQuestion] = value;\n            \n            \/\/ \u6839\u64da\u984c\u865f\u5947\u5076\u6027\u8a08\u7b97\u5206\u6578 (\u7528\u65bc\u7e3d\u5206\u8a08\u7b97)\n            let score;\n            if (questionData.isOdd) {\n                \/\/ \u5947\u6578\u984c\uff1a\u662f=2\u5206\uff0c\u4e0d\u78ba\u5b9a=1\u5206\uff0c\u5426=0\u5206\n                score = value;\n            } else {\n                \/\/ \u5076\u6578\u984c\uff1a\u5426=2\u5206\uff0c\u4e0d\u78ba\u5b9a=1\u5206\uff0c\u662f=0\u5206\n                score = 2 - value;\n            }\n            \n            this.answers[this.currentQuestion] = score;\n            \n            \/\/ \u8abf\u8a66\u4fe1\u606f (\u53ef\u5728\u751f\u7522\u74b0\u5883\u4e2d\u79fb\u9664)\n            \/\/ console.log(`Q${this.currentQuestion + 1}: raw=${value}, score=${score}, category=${questionData.category}`);\n            \n            \/\/ \u5ef6\u9072\u9032\u5165\u4e0b\u4e00\u984c\n            setTimeout(() => {\n                this.nextQuestion();\n            }, 800);\n        }\n        \n        nextQuestion() {\n            this.currentQuestion++;\n            \n            if (this.currentQuestion >= quizData.length) {\n                this.calculateResult();\n            } else {\n                this.loadQuestion();\n            }\n        }\n        \n        goToPreviousQuestion() {\n            if (this.currentQuestion > 0) {\n                this.currentQuestion--;\n                this.loadQuestion();\n            }\n        }\n        \n        calculateResult() {\n            this.totalScore = this.answers.reduce((sum, score) => sum + score, 0);\n            \n            \/\/ \u8abf\u8a66\u4fe1\u606f\uff1a\u6aa2\u67e5\u7b54\u6848\u6578\u7d44\n            if (this.rawAnswers.length !== quizData.length) {\n                console.warn('Raw answers length mismatch:', this.rawAnswers.length, 'vs', quizData.length);\n            }\n            \n            this.calculateDimensionScores();\n            \n            \/\/ \u8abf\u8a66\u4fe1\u606f\uff1a\u6aa2\u67e5\u7dad\u5ea6\u5206\u6578\n            \/\/ console.log('Dimension scores:', this.dimensionScores);\n            \n            this.showResult();\n        }\n        \n        calculateDimensionScores() {\n            \/\/ \u521d\u59cb\u5316\u7dad\u5ea6\u5206\u6578\n            const dimensions = ['social', 'thinking', 'action', 'emotion', 'independence', 'adaptability'];\n            dimensions.forEach(dim => {\n                this.dimensionScores[dim] = { total: 0, count: 0 };\n            });\n            \n            \/\/ \u8a08\u7b97\u5404\u7dad\u5ea6\u5206\u6578\n            quizData.forEach((question, index) => {\n                const category = question.category;\n                const answerValue = this.rawAnswers[index];\n                \n                \/\/ \u78ba\u4fddanswerValue\u662f\u6709\u6548\u6578\u5b57\n                if (typeof answerValue !== 'number' || isNaN(answerValue)) {\n                    return; \/\/ \u8df3\u904e\u7121\u6548\u7b54\u6848\n                }\n                \n                \/\/ \u5c07\u7b54\u6848\u6620\u5c04\u5230\u7dad\u5ea6\u5206\u6578\n                let dimensionScore;\n                if (question.isOdd) {\n                    dimensionScore = answerValue; \/\/ \u662f=2, \u4e0d\u78ba\u5b9a=1, \u5426=0\n                } else {\n                    dimensionScore = 2 - answerValue; \/\/ \u5426=2, \u4e0d\u78ba\u5b9a=1, \u662f=0\n                }\n                \n                \/\/ \u6839\u64da\u985e\u5225\u6620\u5c04\u5230\u4e3b\u8981\u7dad\u5ea6\n                const dimensionMapping = {\n                    'social': 'social',\n                    'thinking': 'thinking', \n                    'action': 'action',\n                    'emotion': 'emotion',\n                    'independence': 'independence',\n                    'adaptability': 'adaptability',\n                    'self_reflection': 'thinking',\n                    'leadership': 'social',\n                    'trust': 'social',\n                    'motivation': 'emotion',\n                    'lifestyle': 'independence',\n                    'planning': 'thinking',\n                    'adventure': 'adaptability',\n                    'flexibility': 'adaptability',\n                    'caution': 'thinking',\n                    'expression': 'social',\n                    'self_confidence': 'emotion',\n                    'detail': 'thinking',\n                    'social_awareness': 'social',\n                    'solitude': 'independence',\n                    'order': 'thinking',\n                    'learning': 'adaptability',\n                    'focus': 'thinking',\n                    'resilience': 'emotion',\n                    'practical': 'action',\n                    'activity_preference': 'action',\n                    'decision_making': 'thinking'\n                };\n                \n                const dimension = dimensionMapping[category];\n                if (dimension && this.dimensionScores[dimension]) {\n                    this.dimensionScores[dimension].total += dimensionScore;\n                    this.dimensionScores[dimension].count += 1;\n                }\n            });\n            \n            \/\/ \u8a08\u7b97\u5e73\u5747\u5206\u6578\u4e26\u8f49\u63db\u70ba\u767e\u5206\u6bd4\uff0c\u8655\u7406NaN\u60c5\u6cc1\n            Object.keys(this.dimensionScores).forEach(dimension => {\n                const data = this.dimensionScores[dimension];\n                if (data.count > 0) {\n                    const rawPercentage = (data.total \/ (data.count * 2)) * 100;\n                    data.percentage = isNaN(rawPercentage) ? 50 : Math.round(Math.max(0, Math.min(100, rawPercentage)));\n                } else {\n                    \/\/ \u5982\u679c\u6c92\u6709\u5c0d\u61c9\u984c\u76ee\uff0c\u8a2d\u7f6e\u70ba\u4e2d\u7b49\u6c34\u5e73\n                    data.percentage = 50;\n                }\n            });\n        }\n        \n        showResult() {\n            \/\/ \u78ba\u5b9a\u7d50\u679c\u985e\u578b\n            let resultKey;\n            if (this.totalScore <= 19) {\n                resultKey = '0-19';\n            } else if (this.totalScore <= 39) {\n                resultKey = '20-39';\n            } else if (this.totalScore <= 59) {\n                resultKey = '40-59';\n            } else if (this.totalScore <= 79) {\n                resultKey = '60-79';\n            } else {\n                resultKey = '80-100';\n            }\n            \n            const result = resultAnalysis[resultKey];\n            \n            \/\/ \u66f4\u65b0\u7d50\u679c\u986f\u793a\n            this.resultType.textContent = result.type;\n            this.resultIcon.className = `bi ${result.icon} text-success fs-1`;\n            this.resultDescription.innerHTML = `<p>${result.description}<\/p>`;\n            \n            \/\/ \u5275\u5efa\u591a\u7dad\u5206\u6790\n            this.createDimensionAnalysis();\n            \n            \/\/ \u5275\u5efa\u500b\u6027\u5316\u5efa\u8b70\n            this.createPersonalizedAdvice();\n            \n            \/\/ \u986f\u793a\u7d50\u679c\u9801\u9762\n            this.showSection(this.resultSection);\n            \n            \/\/ \u5275\u5efa\u5716\u8868\n            this.createChart();\n            \n            \/\/ \u6efe\u52d5\u5230\u9802\u90e8\n            this.scrollToTop();\n        }\n        \n        createDimensionAnalysis() {\n            const dimensions = Object.keys(dimensionConfig);\n            \n            this.dimensionAnalysis.innerHTML = dimensions.map(dimension => {\n                const config = dimensionConfig[dimension];\n                const score = this.dimensionScores[dimension];\n                \n                \/\/ \u78ba\u4fddpercentage\u662f\u6709\u6548\u6578\u5b57\n                const percentage = (score && typeof score.percentage === 'number' && !isNaN(score.percentage)) \n                    ? score.percentage \n                    : 50; \/\/ \u9ed8\u8a8d50%\n                \n                return `\n                    <div class=\"col-md-6 mb-3\">\n                        <div class=\"d-flex align-items-center mb-2\">\n                            <i class=\"bi ${config.icon} text-muted me-2\"><\/i>\n                            <span class=\"fw-medium\">${config.name}<\/span>\n                            <span class=\"ms-auto text-muted\">${percentage}%<\/span>\n                        <\/div>\n                        <div class=\"dimension-bar\">\n                            <div class=\"dimension-fill\" style=\"width: ${percentage}%; background-color: ${config.color};\"><\/div>\n                        <\/div>\n                    <\/div>\n                `;\n            }).join('');\n        }\n        \n        createPersonalizedAdvice() {\n            \/\/ \u5b89\u5168\u7372\u53d6\u7dad\u5ea6\u5206\u6578\uff0c\u907f\u514dNaN\n            const getValidPercentage = (dimension) => {\n                const score = this.dimensionScores[dimension];\n                if (score && typeof score.percentage === 'number' && !isNaN(score.percentage)) {\n                    return score.percentage;\n                }\n                return 50; \/\/ \u9ed8\u8a8d\u4e2d\u7b49\u6c34\u5e73\n            };\n            \n            const highScoreDimensions = Object.keys(this.dimensionScores)\n                .filter(dimension => getValidPercentage(dimension) >= 70);\n                \n            const lowScoreDimensions = Object.keys(this.dimensionScores)\n                .filter(dimension => getValidPercentage(dimension) <= 30);\n            \n            let advice = [];\n            \n            \/\/ \u57fa\u65bc\u9ad8\u5206\u7dad\u5ea6\u7684\u5efa\u8b70\n            if (highScoreDimensions.includes('social')) {\n                advice.push({\n                    title: '\u5584\u7528\u4f60\u7684\u793e\u4ea4\u512a\u52e2',\n                    content: '\u4f60\u5177\u6709\u826f\u597d\u7684\u793e\u4ea4\u80fd\u529b\uff0c\u5efa\u8b70\u591a\u53c3\u8207\u5718\u968a\u5408\u4f5c\u5c08\u6848\uff0c\u767c\u63ee\u4f60\u7684\u4eba\u969b\u5f71\u97ff\u529b\u3002\u53ef\u4ee5\u8003\u616e\u64d4\u4efb\u6e9d\u901a\u6a4b\u6a11\u7684\u89d2\u8272\u3002',\n                    icon: 'bi-people'\n                });\n            }\n            \n            if (highScoreDimensions.includes('thinking')) {\n                advice.push({\n                    title: '\u767c\u63ee\u6df1\u5ea6\u601d\u8003\u80fd\u529b',\n                    content: '\u4f60\u64c5\u9577\u6df1\u5165\u601d\u8003\u554f\u984c\uff0c\u5efa\u8b70\u5728\u91cd\u8981\u6c7a\u7b56\u524d\u7d66\u81ea\u5df1\u5145\u5206\u7684\u601d\u8003\u6642\u9593\uff0c\u9019\u662f\u4f60\u7684\u512a\u52e2\u3002\u53ef\u4ee5\u5f9e\u4e8b\u9700\u8981\u5206\u6790\u548c\u7b56\u5283\u7684\u5de5\u4f5c\u3002',\n                    icon: 'bi-brain'\n                });\n            }\n            \n            if (highScoreDimensions.includes('action')) {\n                advice.push({\n                    title: '\u4fdd\u6301\u884c\u52d5\u6d3b\u529b',\n                    content: '\u4f60\u5177\u6709\u5f88\u5f37\u7684\u57f7\u884c\u529b\uff0c\u5efa\u8b70\u8a2d\u5b9a\u660e\u78ba\u7684\u77ed\u671f\u76ee\u6a19\uff0c\u5feb\u901f\u884c\u52d5\u3002\u540c\u6642\u8981\u6ce8\u610f\u5728\u91cd\u8981\u4e8b\u9805\u4e0a\u4fdd\u6301\u7d30\u5fc3\u3002',\n                    icon: 'bi-lightning'\n                });\n            }\n            \n            if (highScoreDimensions.includes('emotion')) {\n                advice.push({\n                    title: '\u5584\u7528\u60c5\u611f\u8868\u9054\u80fd\u529b',\n                    content: '\u4f60\u5728\u60c5\u611f\u8868\u9054\u65b9\u9762\u5f88\u6709\u5929\u8ce6\uff0c\u53ef\u4ee5\u5728\u9700\u8981\u540c\u7406\u5fc3\u548c\u60c5\u611f\u6e9d\u901a\u7684\u5834\u5408\u767c\u63ee\u512a\u52e2\uff0c\u4f46\u4e5f\u8981\u5b78\u6703\u9069\u6642\u63a7\u5236\u60c5\u7dd2\u3002',\n                    icon: 'bi-heart'\n                });\n            }\n            \n            if (highScoreDimensions.includes('independence')) {\n                advice.push({\n                    title: '\u767c\u63ee\u7368\u7acb\u81ea\u4e3b\u7279\u8cea',\n                    content: '\u4f60\u5177\u6709\u5f88\u5f37\u7684\u7368\u7acb\u6027\uff0c\u9069\u5408\u627f\u64d4\u9700\u8981\u81ea\u4e3b\u6c7a\u7b56\u7684\u5de5\u4f5c\u3002\u5efa\u8b70\u5728\u5718\u968a\u4e2d\u4e5f\u8981\u4fdd\u6301\u9069\u5ea6\u7684\u5408\u4f5c\u7cbe\u795e\u3002',\n                    icon: 'bi-person-standing'\n                });\n            }\n            \n            if (highScoreDimensions.includes('adaptability')) {\n                advice.push({\n                    title: '\u904b\u7528\u9069\u61c9\u80fd\u529b\u512a\u52e2',\n                    content: '\u4f60\u7684\u9069\u61c9\u80fd\u529b\u5f88\u5f37\uff0c\u5728\u8b8a\u5316\u5feb\u901f\u7684\u74b0\u5883\u4e2d\u80fd\u5920\u6e38\u5203\u6709\u9918\u3002\u5efa\u8b70\u4e3b\u52d5\u5c0b\u627e\u9700\u8981\u9748\u6d3b\u61c9\u8b8a\u7684\u6311\u6230\u6a5f\u6703\u3002',\n                    icon: 'bi-arrow-repeat'\n                });\n            }\n            \n            \/\/ \u57fa\u65bc\u4f4e\u5206\u7dad\u5ea6\u7684\u5efa\u8b70\n            if (lowScoreDimensions.includes('social')) {\n                advice.push({\n                    title: '\u9010\u6b65\u62d3\u5c55\u793e\u4ea4\u5708',\n                    content: '\u53ef\u4ee5\u5f9e\u5c0f\u5718\u9ad4\u958b\u59cb\uff0c\u9010\u6f38\u64f4\u5c55\u793e\u4ea4\u7bc4\u570d\u3002\u7dda\u4e0a\u793e\u7fa4\u662f\u4e00\u500b\u5f88\u597d\u7684\u8d77\u9ede\uff0c\u8b93\u4f60\u5728\u8212\u9069\u7684\u74b0\u5883\u4e2d\u7df4\u7fd2\u793e\u4ea4\u6280\u5de7\u3002',\n                    icon: 'bi-people'\n                });\n            }\n            \n            if (lowScoreDimensions.includes('adaptability')) {\n                advice.push({\n                    title: '\u63d0\u5347\u9069\u61c9\u80fd\u529b',\n                    content: '\u5efa\u8b70\u5617\u8a66\u5c0f\u5e45\u5ea6\u7684\u6539\u8b8a\uff0c\u5982\u8abf\u6574\u65e5\u5e38\u4f5c\u606f\u6216\u5617\u8a66\u65b0\u7684\u5b78\u7fd2\u65b9\u6cd5\uff0c\u9010\u6b65\u63d0\u5347\u5c0d\u8b8a\u5316\u7684\u9069\u61c9\u80fd\u529b\u3002',\n                    icon: 'bi-arrow-repeat'\n                });\n            }\n            \n            if (lowScoreDimensions.includes('emotion')) {\n                advice.push({\n                    title: '\u52a0\u5f37\u60c5\u611f\u8868\u9054',\n                    content: '\u53ef\u4ee5\u5617\u8a66\u900f\u904e\u5beb\u4f5c\u3001\u85dd\u8853\u6216\u8207\u4fe1\u4efb\u7684\u670b\u53cb\u4ea4\u6d41\u4f86\u7df4\u7fd2\u60c5\u611f\u8868\u9054\uff0c\u9010\u6b65\u63d0\u5347\u60c5\u611f\u6e9d\u901a\u80fd\u529b\u3002',\n                    icon: 'bi-heart'\n                });\n            }\n            \n            if (lowScoreDimensions.includes('action')) {\n                advice.push({\n                    title: '\u63d0\u5347\u884c\u52d5\u6548\u7387',\n                    content: '\u5efa\u8b70\u5236\u5b9a\u6e05\u6670\u7684\u884c\u52d5\u8a08\u756b\uff0c\u8a2d\u5b9a\u5c0f\u76ee\u6a19\u4f86\u63d0\u5347\u57f7\u884c\u529b\u3002\u53ef\u4ee5\u4f7f\u7528\u6642\u9593\u7ba1\u7406\u5de5\u5177\u4f86\u6539\u5584\u884c\u52d5\u6548\u7387\u3002',\n                    icon: 'bi-lightning'\n                });\n            }\n            \n            \/\/ \u9ed8\u8a8d\u5efa\u8b70\n            if (advice.length === 0) {\n                advice.push({\n                    title: '\u4fdd\u6301\u5e73\u8861\u767c\u5c55',\n                    content: '\u4f60\u7684\u5404\u9805\u80fd\u529b\u767c\u5c55\u8f03\u70ba\u5747\u8861\uff0c\u5efa\u8b70\u6839\u64da\u4e0d\u540c\u60c5\u5883\u9748\u6d3b\u8abf\u6574\u81ea\u5df1\u7684\u8868\u73fe\u65b9\u5f0f\uff0c\u9019\u662f\u4f60\u7684\u512a\u52e2\u3002',\n                    icon: 'bi-balance-scale'\n                });\n                \n                advice.push({\n                    title: '\u6301\u7e8c\u81ea\u6211\u63a2\u7d22',\n                    content: '\u7e7c\u7e8c\u95dc\u6ce8\u81ea\u5df1\u7684\u6210\u9577\uff0c\u5b9a\u671f\u53cd\u601d\u548c\u8abf\u6574\uff0c\u5728\u4fdd\u6301\u5e73\u8861\u7684\u540c\u6642\u4e5f\u53ef\u4ee5\u9078\u64c7\u4e00\u5169\u500b\u65b9\u9762\u91cd\u9ede\u767c\u5c55\u3002',\n                    icon: 'bi-compass'\n                });\n            }\n            \n            this.personalizedAdvice.innerHTML = advice.map(item => `\n                <div class=\"border-start border-success border-3 ps-3 mb-4\">\n                    <h6 class=\"fw-bold d-flex align-items-center\">\n                        <i class=\"bi ${item.icon} text-success me-2\"><\/i>\n                        ${item.title}\n                    <\/h6>\n                    <p class=\"mb-0 text-muted\">${item.content}<\/p>\n                <\/div>\n            `).join('');\n        }\n        \n        createChart() {\n            \/\/ \u92b7\u6bc0\u73fe\u6709\u5716\u8868\u5be6\u4f8b\n            if (this.chart) {\n                this.chart.destroy();\n                this.chart = null;\n            }\n            \n            \/\/ \u4f7f\u7528\u5feb\u53d6\u7684\u756b\u5e03\u5143\u7d20\n            if (!this.chartCanvas) {\n                console.warn('Chart canvas element not found');\n                return;\n            }\n            \n            \/\/ \u5206\u6578\u5340\u9593\u6578\u64da\n            const scoreRanges = [\n                { label: '\u5167\u56ae\u578b', min: 0, max: 19, color: '#6f42c1' },\n                { label: '\u504f\u5167\u56ae', min: 20, max: 39, color: '#0dcaf0' },\n                { label: '\u4e2d\u9593\u578b', min: 40, max: 59, color: '#28a745' },\n                { label: '\u504f\u5916\u56ae', min: 60, max: 79, color: '#fd7e14' },\n                { label: '\u5916\u56ae\u578b', min: 80, max: 100, color: '#dc3545' }\n            ];\n            \n            \/\/ \u5275\u5efa\u6c34\u5e73\u5806\u758a\u67f1\u72c0\u5716\u6578\u64da\n            const data = {\n                labels: ['\u6027\u683c\u5206\u5e03'],\n                datasets: scoreRanges.map(range => ({\n                    label: `${range.label} (${range.min}-${range.max}\u5206)`,\n                    data: [range.max - range.min + 1],\n                    backgroundColor: range.color,\n                    borderWidth: 0\n                }))\n            };\n            \n            try {\n                this.chart = new Chart(this.chartCanvas, {\n                    type: 'bar',\n                    data: data,\n                    options: {\n                        responsive: true,\n                        maintainAspectRatio: false,\n                        indexAxis: 'y',\n                        scales: {\n                            x: {\n                                stacked: true,\n                                display: false,\n                                max: 101\n                            },\n                            y: {\n                                stacked: true,\n                                display: false\n                            }\n                        },\n                        plugins: {\n                            legend: {\n                                position: 'bottom',\n                                labels: {\n                                    padding: 20,\n                                    font: {\n                                        size: 14\n                                    },\n                                    usePointStyle: true,\n                                    pointStyle: 'circle'\n                                }\n                            },\n                            tooltip: {\n                                enabled: false\n                            }\n                        },\n                        layout: {\n                            padding: {\n                                top: 30,\n                                bottom: 20\n                            }\n                        },\n                        onHover: () => {},\n                        animation: {\n                            onComplete: () => {\n                                \/\/ \u5728\u5716\u8868\u5b8c\u6210\u5f8c\u6dfb\u52a0\u7528\u6236\u5206\u6578\u6a19\u8a18\n                                this.addScoreMark();\n                            }\n                        }\n                    }\n                });\n            } catch (error) {\n                console.error('Chart creation failed:', error);\n            }\n        }\n        \n        addScoreMark() {\n            if (!this.chart || !this.chartCanvas) return;\n            \n            try {\n                const ctx = this.chartCanvas.getContext('2d');\n                const chartArea = this.chart.chartArea;\n                \n                \/\/ \u8a08\u7b97\u7528\u6236\u5206\u6578\u5728\u5716\u8868\u4e2d\u7684\u4f4d\u7f6e\n                const scorePosition = (this.totalScore \/ 100) * chartArea.width + chartArea.left;\n                const yPosition = chartArea.top + (chartArea.height \/ 2);\n                \n                \/\/ \u7e6a\u88fd\u7d05\u8272\u5713\u9ede\n                ctx.save();\n                ctx.fillStyle = '#dc3545';\n                ctx.beginPath();\n                ctx.arc(scorePosition, yPosition, 8, 0, 2 * Math.PI);\n                ctx.fill();\n                \n                \/\/ \u7e6a\u88fd\u767d\u8272\u908a\u6846\n                ctx.strokeStyle = '#ffffff';\n                ctx.lineWidth = 3;\n                ctx.stroke();\n                \n                \/\/ \u6dfb\u52a0\"\u4f60\u7684\u4f4d\u7f6e\"\u6a19\u7c64\n                ctx.fillStyle = '#dc3545';\n                ctx.font = 'bold 14px Arial';\n                ctx.textAlign = 'center';\n                ctx.fillText('\u4f60\u7684\u4f4d\u7f6e', scorePosition, yPosition - 18);\n                \n                ctx.restore();\n            } catch (error) {\n                console.warn('Failed to add score mark:', error);\n            }\n        }\n        \n        showSection(targetSection) {\n            \/\/ \u96b1\u85cf\u6240\u6709\u5340\u6bb5\n            [this.introSection, this.quizSection, this.resultSection].forEach(section => {\n                section.classList.add('d-none');\n            });\n            \n            \/\/ \u986f\u793a\u76ee\u6a19\u5340\u6bb5\n            targetSection.classList.remove('d-none');\n        }\n        \n        resetQuiz() {\n            \/\/ \u91cd\u7f6e\u72c0\u614b\n            this.currentQuestion = 0;\n            this.answers = [];\n            this.rawAnswers = [];\n            this.totalScore = 0;\n            this.dimensionScores = {};\n            \n            \/\/ \u92b7\u6bc0Chart.js\u5be6\u4f8b\u4e26\u6e05\u7406\u8cc7\u6e90\n            if (this.chart) {\n                try {\n                    this.chart.destroy();\n                } catch (error) {\n                    console.warn('Chart destruction failed:', error);\n                } finally {\n                    this.chart = null;\n                }\n            }\n            \n            \/\/ \u6e05\u7406\u52d5\u614b\u751f\u6210\u7684\u5167\u5bb9\n            if (this.optionsContainer) {\n                this.optionsContainer.innerHTML = '';\n            }\n            if (this.dimensionAnalysis) {\n                this.dimensionAnalysis.innerHTML = '';\n            }\n            if (this.personalizedAdvice) {\n                this.personalizedAdvice.innerHTML = '';\n            }\n            \n            \/\/ \u91cd\u7f6e\u9032\u5ea6\u689d\n            if (this.progressBar) {\n                this.progressBar.style.width = '2%';\n                this.progressBar.setAttribute('aria-valuenow', '1');\n            }\n            \n            \/\/ \u986f\u793a\u5f15\u5c0e\u9801\n            this.showSection(this.introSection);\n            this.scrollToTop();\n        }\n        \n        scrollToTop() {\n            \/\/ \u5e73\u6ed1\u6efe\u52d5\u5230\u9802\u90e8\n            setTimeout(() => {\n                const activeSection = document.querySelector('section:not(.d-none)');\n                if (activeSection) {\n                    activeSection.scrollIntoView({ \n                        behavior: 'smooth', \n                        block: 'start' \n                    });\n                }\n            }, 100);\n        }\n    }\n    \n    \/\/ \u521d\u59cb\u5316\u6e2c\u9a57\n    document.addEventListener('DOMContentLoaded', () => {\n        new PersonalityQuiz();\n    });\n    \n})();\n<\/script>","protected":false},"excerpt":{"rendered":"<p>\u5916\u5411\u578b\u4e00\u822c\u8868\u73b0\u4e3a\u6d3b\u6cfc\u3001\u5f00\u6717\u3001\u7075\u6d3b\uff1b\u5185\u5411\u578b\u8868\u73b0\u4e3a\u6587\u9759\u3001\u7231\u601d\u8003\u3001\u7ec6\u81f4\u3002\u4e24\u79cd\u6027\u683c\u7c7b\u578b\u90fd\u5404\u6709\u5176\u4f18\u70b9\u548c\u7f3a\u70b9\uff0c\u4e92\u4e3a\u8865\u5145\u3002\u4f60\u7684\u6027\u683c\u671d\u5411\u54ea\u91cc\u5462\uff1f<\/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":"narrow-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":[167],"tags":[],"class_list":["post-2638","post","type-post","status-publish","format-standard","hentry","category-personality"],"_links":{"self":[{"href":"https:\/\/xinliceyan.org\/zh\/wp-json\/wp\/v2\/posts\/2638","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=2638"}],"version-history":[{"count":2,"href":"https:\/\/xinliceyan.org\/zh\/wp-json\/wp\/v2\/posts\/2638\/revisions"}],"predecessor-version":[{"id":10297,"href":"https:\/\/xinliceyan.org\/zh\/wp-json\/wp\/v2\/posts\/2638\/revisions\/10297"}],"wp:attachment":[{"href":"https:\/\/xinliceyan.org\/zh\/wp-json\/wp\/v2\/media?parent=2638"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/xinliceyan.org\/zh\/wp-json\/wp\/v2\/categories?post=2638"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/xinliceyan.org\/zh\/wp-json\/wp\/v2\/tags?post=2638"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}