{"id":2383,"date":"2023-10-07T09:14:02","date_gmt":"2023-10-07T01:14:02","guid":{"rendered":"https:\/\/bookmark.tw\/?p=2383"},"modified":"2025-05-25T16:25:52","modified_gmt":"2025-05-25T08:25:52","slug":"pessimistic-love","status":"publish","type":"post","link":"https:\/\/xinliceyan.org\/zh\/pessimistic-love","title":{"rendered":"\u514d\u8d39\u795e\u51c6\u7ebf\u4e0a\u5c0f\u6d4b\u9a8c\uff1a4\u578b\u7231\u60c5\u6050\u60e7\u75c7\uff0c\u4f60\u7684\u60b2\u89c2\u6839\u6e90\u85cf\u5728\u54ea\uff1f"},"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\n<!-- Love Pessimism Test Structure -->\n<div class=\"love-test-container\" style=\"max-width: 750px;\">\n  <!-- Introduction Page - Landing Style -->\n  <div id=\"intro-page\" class=\"test-page active\">\n    <div class=\"container-fluid\">\n      <div class=\"row\">\n        <div class=\"col-12\">\n          <!-- Hero Section -->\n          <div class=\"text-center py-5\">\n            <div class=\"hero-icons mb-4\">\n              <span class=\"badge bg-primary-subtle text-primary fs-1 me-3 p-3 rounded-circle\">\n                <i class=\"bi bi-heart-fill\"><\/i>\n              <\/span>\n              <span class=\"badge bg-info-subtle text-info fs-1 me-3 p-3 rounded-circle\">\n                <i class=\"bi bi-lightbulb-fill\"><\/i>\n              <\/span>\n              <span class=\"badge bg-success-subtle text-success fs-1 p-3 rounded-circle\">\n                <i class=\"bi bi-graph-up\"><\/i>\n              <\/span>\n            <\/div>\n            \n            <h1 class=\"display-4 fw-bold text-primary mb-4\">\u7231\u60c5\u60b2\u89c2\u8bba\u6d4b\u9a8c<\/h1>\n            <p class=\"lead text-muted mb-5 px-md-4\">\n              \u900f\u904e\u5c08\u696d\u5fc3\u7406\u6e2c\u9a57\uff0c\u6df1\u5ea6\u5206\u6790\u4f60\u5728\u611b\u60c5\u4e2d\u7684\u60b2\u89c0\u6a21\u5f0f\uff0c\u5e6b\u52a9\u5efa\u7acb\u66f4\u5065\u5eb7\u7684\u6200\u611b\u5fc3\u614b\n            <\/p>\n          <\/div>\n\n          <!-- Features Section -->\n          <div class=\"row g-4 mb-5\">\n            <div class=\"col-md-4\">\n              <div class=\"text-center p-4\">\n                <div class=\"bg-primary-subtle text-primary rounded-circle d-inline-flex align-items-center justify-content-center mb-3\" style=\"width: 64px; height: 64px;\">\n                  <i class=\"bi bi-clock fs-4\"><\/i>\n                <\/div>\n                <h5 class=\"fw-semibold\">\u5feb\u901f\u5b8c\u6210<\/h5>\n                <p class=\"text-muted small mb-0\">\u50c5\u97003-5\u5206\u9418\u5b8c\u621010\u500b\u554f\u984c<\/p>\n              <\/div>\n            <\/div>\n            <div class=\"col-md-4\">\n              <div class=\"text-center p-4\">\n                <div class=\"bg-info-subtle text-info rounded-circle d-inline-flex align-items-center justify-content-center mb-3\" style=\"width: 64px; height: 64px;\">\n                  <i class=\"bi bi-shield-check fs-4\"><\/i>\n                <\/div>\n                <h5 class=\"fw-semibold\">\u5c08\u696d\u53ef\u9760<\/h5>\n                <p class=\"text-muted small mb-0\">\u57fa\u65bc\u5fc3\u7406\u5b78\u7406\u8ad6\u8a2d\u8a08<\/p>\n              <\/div>\n            <\/div>\n            <div class=\"col-md-4\">\n              <div class=\"text-center p-4\">\n                <div class=\"bg-success-subtle text-success rounded-circle d-inline-flex align-items-center justify-content-center mb-3\" style=\"width: 64px; height: 64px;\">\n                  <i class=\"bi bi-person-check fs-4\"><\/i>\n                <\/div>\n                <h5 class=\"fw-semibold\">\u500b\u4eba\u5316\u5206\u6790<\/h5>\n                <p class=\"text-muted small mb-0\">\u7372\u5f97\u5c08\u5c6c\u7684\u7d50\u679c\u5831\u544a<\/p>\n              <\/div>\n            <\/div>\n          <\/div>\n\n          <!-- CTA Section -->\n          <div class=\"text-center pb-5\">\n            <div class=\"bg-light rounded-4 p-5\">\n              <h3 class=\"fw-semibold mb-3\">\u6e96\u5099\u958b\u59cb\u4f60\u7684\u611b\u60c5\u5fc3\u7406\u4e4b\u65c5\uff1f<\/h3>\n              <p class=\"text-muted mb-4\">\n                \u4e86\u89e3\u81ea\u5df1\u5728\u611b\u60c5\u4e2d\u7684\u60b2\u89c0\u6a21\u5f0f\uff0c\u662f\u5efa\u7acb\u5065\u5eb7\u95dc\u4fc2\u7684\u7b2c\u4e00\u6b65\u3002<br>\n                \u73fe\u5728\u5c31\u958b\u59cb\u9019\u500b\u7c21\u55ae\u800c\u6df1\u523b\u7684\u6e2c\u9a57\u5427\uff01\n              <\/p>\n              <button id=\"start-test\" class=\"btn btn-primary btn-lg px-5 py-3 rounded-pill\">\n                <i class=\"bi bi-play-circle-fill me-2\"><\/i>\u7acb\u5373\u5f00\u59cb\u6d4b\u9a8c\n              <\/button>\n            <\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- Test Page -->\n  <div id=\"test-page\" class=\"test-page\">\n    <div class=\"container-fluid\">\n      <div class=\"row\">\n        <div class=\"col-12\">\n          <div class=\"text-center mb-4\">\n            <h2 class=\"h3 fw-bold text-primary\">\u7231\u60c5\u60b2\u89c2\u8bba\u6d4b\u9a8c<\/h2>\n          <\/div>\n          \n          <!-- Progress Bar -->\n          <div class=\"card border-0 shadow-sm mb-4\">\n            <div class=\"card-body\">\n              <div class=\"d-flex justify-content-between align-items-center mb-2\">\n                <span class=\"fw-semibold text-dark\">\u6d4b\u9a8c\u8fdb\u5ea6<\/span>\n                <span id=\"progress-text\" class=\"text-muted\">\u95ee\u98981\/10<\/span>\n              <\/div>\n              <div class=\"progress\" style=\"height: 8px;\">\n                <div id=\"progress-fill\" class=\"progress-bar bg-primary\" role=\"progressbar\" style=\"width: 0%\"><\/div>\n              <\/div>\n            <\/div>\n          <\/div>\n          \n          <!-- Question Container -->\n          <div id=\"question-container\">\n            <div class=\"card border-0 shadow-sm\">\n              <div class=\"card-body p-4 p-md-5\">\n                <h3 id=\"question-text\" class=\"h4 fw-semibold mb-4 text-dark\"><\/h3>\n                <div id=\"options-container\" class=\"d-grid gap-3\"><\/div>\n              <\/div>\n            <\/div>\n            \n            <div class=\"text-center mt-4\">\n              <button id=\"prev-button\" class=\"btn btn-outline-secondary rounded-pill px-4\" style=\"display: none;\">\n                <i class=\"bi bi-arrow-left me-2\"><\/i>\u4e0a\u4e00\u9898\n              <\/button>\n            <\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- Result Page -->\n  <div id=\"result-page\" class=\"test-page\">\n    <div class=\"container-fluid\">\n      <div class=\"row\">\n        <div class=\"col-12\">\n          <div class=\"text-center mb-4\">\n            <h2 class=\"h3 fw-bold text-primary\">\u6d4b\u9a8c\u7ed3\u679c<\/h2>\n          <\/div>\n          \n          <div class=\"result-container\">\n            <!-- Result Header -->\n            <div class=\"card border-0 shadow-sm mb-4\">\n              <div class=\"card-body text-center py-4\">\n                <div class=\"bg-primary-subtle text-primary rounded-circle d-inline-flex align-items-center justify-content-center mb-3\" style=\"width: 80px; height: 80px;\">\n                  <i class=\"bi bi-person-circle fs-1\"><\/i>\n                <\/div>\n                <h3 id=\"result-type\" class=\"h4 fw-bold text-primary mb-0\"><\/h3>\n              <\/div>\n            <\/div>\n            \n            <!-- Chart and Description -->\n            <div class=\"row g-4 mb-4\">\n              <div class=\"col-md-6\">\n                <div class=\"card border-0 shadow-sm h-100\">\n                  <div class=\"card-body d-flex align-items-center justify-content-center\">\n                    <canvas id=\"result-chart\" style=\"max-width: 300px; max-height: 300px;\"><\/canvas>\n                  <\/div>\n                <\/div>\n              <\/div>\n              <div class=\"col-md-6\">\n                <div class=\"card border-0 shadow-sm h-100\">\n                  <div class=\"card-body d-flex align-items-center\">\n                    <p id=\"result-text\" class=\"mb-0 lh-lg\"><\/p>\n                  <\/div>\n                <\/div>\n              <\/div>\n            <\/div>\n            \n            <!-- CTA -->\n            <div class=\"text-center\">\n              <button id=\"retake-button\" class=\"btn btn-primary btn-lg px-5 py-3 rounded-pill\">\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    <\/div>\n  <\/div>\n<\/div>\n\n<!-- Custom Styles (Minimal) -->\n<style>\n.love-test-container {\n  margin: 2rem auto;\n  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n}\n\n.test-page {\n  display: none;\n  padding: 2rem 1rem;\n  min-height: 500px;\n}\n\n.test-page.active {\n  display: block;\n  animation: fadeIn 0.4s ease-out;\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.hero-icons .badge {\n  animation: float 3s ease-in-out infinite;\n}\n\n.hero-icons .badge:nth-child(1) { animation-delay: 0s; }\n.hero-icons .badge:nth-child(2) { animation-delay: 0.3s; }\n.hero-icons .badge:nth-child(3) { animation-delay: 0.6s; }\n\n@keyframes float {\n  0%, 100% { transform: translateY(0px); }\n  50% { transform: translateY(-10px); }\n}\n\n.option-button {\n  border: 2px solid var(--bs-border-color);\n  background: white;\n  color: var(--bs-dark);\n  padding: 1.25rem 1.5rem;\n  border-radius: var(--bs-border-radius-lg);\n  transition: all 0.2s ease;\n  position: relative;\n  text-align: left;\n}\n\n.option-button:hover,\n.option-button.selected {\n  border-color: var(--bs-primary);\n  background: var(--bs-primary-bg-subtle);\n  color: var(--bs-primary);\n  transform: translateY(-2px);\n  box-shadow: var(--bs-box-shadow);\n}\n\n.option-button::after {\n  content: '\\F285';\n  font-family: 'bootstrap-icons';\n  position: absolute;\n  right: 1.5rem;\n  top: 50%;\n  transform: translateY(-50%);\n  opacity: 0;\n  transition: opacity 0.2s ease;\n}\n\n.option-button:hover::after {\n  opacity: 1;\n}\n\n.btn:hover {\n  transform: translateY(-2px);\n}\n\n@media (max-width: 768px) {\n  .love-test-container {\n    margin: 1rem;\n  }\n  \n  .test-page {\n    padding: 1.5rem 0.5rem;\n  }\n  \n  .hero-icons .badge {\n    font-size: 0.875rem !important;\n    margin-right: 0.5rem !important;\n  }\n  \n  .display-4 {\n    font-size: 2rem !important;\n  }\n  \n  .option-button {\n    padding: 1rem 1.25rem;\n  }\n}\n<\/style>\n\n<!-- JavaScript -->\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/Chart.js\/3.9.1\/chart.min.js\"><\/script>\n<script>\n(function() {\n  'use strict';\n  \n  \/\/ Test Data Configuration\n  const testConfig = {\n    questions: [\n      {\n        text: \"1. \u4f60\u662f\u5426\u5c0d\u5225\u4eba\u7684\u6307\u8cac\u7121\u80fd\u70ba\u529b\uff0c\u7121\u52d5\u65bc\u8877\u6216\u8005\u6d88\u6975\u62b5\u6297\uff1f\",\n        options: [\n          { text: \"\u662f\u7684\", next: 1 },\n          { text: \"\u4e0d\u662f\", next: 2 },\n          { text: \"\u9084\u597d\", next: 3 }\n        ]\n      },\n      {\n        text: \"2. \u4f60\u662f\u5426\u89ba\u5f97\u81ea\u5df1\u7684\u5de5\u4f5c\u4e0d\u65b7\u91cd\u8907\u800c\u4e14\u55ae\u8abf\u4e4f\u5473\uff1f\",\n        options: [\n          { text: \"\u662f\u7684\", next: 2 },\n          { text: \"\u4e0d\u662f\", next: 3 },\n          { text: \"\u9084\u597d\", next: 4 }\n        ]\n      },\n      {\n        text: \"3. \u4f60\u8981\u9060\u884c\uff0c\u4e58\u5750\u7684\u662f\u4ec0\u9ebc\u8239\uff1f\",\n        options: [\n          { text: \"\u6d77\u76dc\u8239\", next: 3 },\n          { text: \"\u5c0f\u8239\", next: 4 },\n          { text: \"\u904a\u8f2a\", next: 5 }\n        ]\n      },\n      {\n        text: \"4. \u65c5\u904a\uff0c\u4f60\u9858\u610f\u8ddf\u591a\u5c11\u4eba\u540c\u884c\uff1f\",\n        options: [\n          { text: \"\u5e7e\u5341\u4eba\", next: 4 },\n          { text: \"\u5e7e\u500b\u4eba\", next: 5 },\n          { text: \"\u81ea\u5df1\u4e00\u500b\u4eba\", next: 6 }\n        ]\n      },\n      {\n        text: \"5. \u4e00\u500b\u540c\u4e8b\u751f\u75c5\u5f8c\uff0c\u4f60\u6703\uff1a\",\n        options: [\n          { text: \"\u6253\u96fb\u8a71\u554f\u5019\", next: 5 },\n          { text: \"\u5229\u7528\u696d\u9918\u6642\u9593\u7167\u9867\u4ed6\uff0c\u5e0c\u671b\u4ed6\u65e9\u65e5\u5eb7\u5fa9\", next: 6 },\n          { text: \"\u540c\u4e8b\u800c\u5df2\uff0c\u592a\u95dc\u5fc3\u53cd\u800c\u505a\u4f5c\uff0c\u8c61\u5fb5\u6027\u554f\u554f\u5c31\u597d\", next: 7 }\n        ]\n      },\n      {\n        text: \"6. \u4f60\u4e0d\u559c\u6b61\u7537\uff08\u5973\uff09\u670b\u53cb\u7684\u540c\u4e8b\u5011\uff0c\u5982\u4ed6\u5011\u9080\u8acb\u4f60\u8d74\u4ed6\u5011\u7684\u5bb4\u6703\uff0c\u4f60\u6703\uff1a\",\n        options: [\n          { text: \"\u7a7f\u6700\u597d\u770b\u7684\u8863\u670d\uff0c\u6253\u626e\u597d\uff0c\u9ad8\u9ad8\u8208\u8208\u5730\u8d74\u5bb4\", next: 6 },\n          { text: \"\u52c9\u5f37\u8d74\u5bb4\uff0c\u5f37\u88dd\u7b11\u81c9\", next: 7 },\n          { text: \"\u63a8\u8fad\u4e0d\u53bb\", value: \"A\" }\n        ]\n      },\n      {\n        text: \"7. \u4f60\u548c\u540c\u4e8b\u4e00\u8d77\u51fa\u5916\u5403\u5348\u9910\uff0c\u4e00\u822c\u4f86\u8aaa\uff0c\u6709\u5e7e\u500b\u4eba\u548c\u4f60\u5728\u4e00\u8d77\uff1f\",\n        options: [\n          { text: \"\u4e00\u500b\", next: 7 },\n          { text: \"\u6700\u591a\u5169\u500b\", next: 8 },\n          { text: \"\u4e00\u5927\u5925\u4eba\", next: 9 }\n        ]\n      },\n      {\n        text: \"8. \u807d\u5230\u4e00\u500b\u6709\u8da3\u7684\u6545\u4e8b\u5f8c\uff0c\u4f60\u6703\uff1a\",\n        options: [\n          { text: \"\u8feb\u4e0d\u53ca\u5f85\u5730\u5411\u670b\u53cb\u8f49\u8ff0\", next: 8 },\n          { text: \"\u7b11\u4e00\u9663\u4e86\u4e8b\", value: \"A\" },\n          { text: \"\u8a18\u4e0b\u4f86\uff0c\u544a\u8a34\u6200\u4eba\", value: \"B\" }\n        ]\n      },\n      {\n        text: \"9. \u807d\u5230\u6709\u4eba\u9020\u4f60\u7684\u8b20\uff0c\u4f60\u6703\uff1a\",\n        options: [\n          { text: \"\u52c3\u7136\u5927\u6012\uff0c\u8981\u627e\u90a3\u4eba\u7b97\u5e33\", value: \"C\" },\n          { text: \"\u7121\u6240\u8b02\uff0c\u4e0d\u5728\u4e4e\", value: \"D\" },\n          { text: \"\u6697\u81ea\u5831\u5fa9\", value: \"A\" }\n        ]\n      },\n      {\n        text: \"10. \u5982\u679c\u4f60\u9084\u6c92\u6709\u7537\uff08\u5973\uff09\u670b\u53cb\uff0c\u73fe\u5728\u8981\u4f60\u9078\u4e00\u500b\uff0c\u4f60\u559c\u6b61\u9078\u64c7\u4f55\u7a2e\u6027\u683c\u7684\u5462\uff1f\",\n        options: [\n          { text: \"\u5177\u6709\u5e7d\u9ed8\u611f\u7684\", value: \"B\" },\n          { text: \"\u4e00\u822c\u4eba\uff0c\u689d\u4ef6\u5408\u9069\u5c31\u597d\", value: \"C\" },\n          { text: \"\u4e0a\u9032\u5fc3\u5f37\u7684\uff0c\u6709\u601d\u60f3\u7684\u4eba\", value: \"D\" }\n        ]\n      }\n    ],\n    \n    results: {\n      \"A\": {\n        title: \"\u5b89\u5168\u611f\u7f3a\u4e4f\u578b\",\n        description: \"\u4f60\u975e\u5e38\u7f3a\u4e4f\u5b89\u5168\u611f\uff0c\u4f60\u5be7\u9858\u53bb\u76f8\u4fe1\u90a3\u4e9b\u865b\u7121\u7e39\u7df2\u7684\u6771\u897f\uff0c\u4e5f\u4e0d\u9858\u76f8\u4fe1\u611b\u60c5\u771f\u7684\u80fd\u5920\u505a\u5230\u6709\u60c5\u4eba\u7d42\u6210\u7737\u5c6c\uff0c\u4f60\u59cb\u7d42\u8a8d\u70ba\u611b\u60c5\u5c31\u662f\u75db\u82e6\u7684\uff0c\u662f\u96e3\u4ee5\u8b93\u4f60\u5b89\u5b9a\u7684\u4e8b\u7269\u3002\u4f60\u4e26\u6c92\u6709\u5617\u8a66\u904e\u771f\u6b63\u7684\u611b\u60c5\u7684\u6ecb\u5473\uff0c\u56e0\u70ba\u7f3a\u4e4f\u52c7\u6c23\u53bb\u9762\u5c0d\u611b\u60c5\uff0c\u50c5\u50c5\u6191\u81ea\u5df1\u7684\u60f3\u50cf\u53bb\u5c0d\u5f85\u611b\u60c5\uff0c\u96e3\u514d\u5f80\u60b2\u89c0\u7684\u65b9\u5411\u8003\u616e\u554f\u984c\u3002\",\n        scores: {\n          \"\u5b89\u5168\u611f\": 15,\n          \"\u81ea\u4fe1\": 45,\n          \"\u6a02\u89c0\": 25,\n          \"\u4fe1\u4efb\": 30,\n          \"\u4e3b\u52d5\u6027\": 40\n        }\n      },\n      \"B\": {\n        title: \"\u4f9d\u8cf4\u578b\",\n        description: \"\u4f60\u4e4b\u6240\u4ee5\u562e\u562e\u53e8\u53e8\u7684\u9084\u8981\u6e90\u65bc\u4f60\u7684\u4f9d\u8cf4\u611f\u548c\u5b89\u5168\u611f\uff0c\u4f60\u5bb3\u6015\u88ab\u4eba\u62cb\u68c4\u88ab\u4eba\u6254\u5728\u4e00\u908a\uff0c\u800c\u4e14\u5728\u4e0d\u9858\u5192\u96aa\u7684\u4f60\u7684\u773c\u4e2d\uff0c\u6c38\u9060\u90fd\u5c0d\u611b\u60c5\u9019\u7a2e\u6709\u98a8\u96aa\u7684\u6771\u897f\u6709\u8457\u53ef\u671b\u4e0d\u53ef\u5373\u7684\u60f3\u6cd5\u3002\u660e\u660e\u975e\u5e38\u6e34\u671b\u611b\u60c5\uff0c\u537b\u4e0d\u6562\u53bb\u8ffd\u6c42\u3002\u56e0\u70ba\u4f60\u89ba\u5f97\u5931\u6557\u7684\u5e7e\u7387\u6bd4\u6210\u529f\u7684\u5e7e\u7387\u8981\u5927\uff0c\u6240\u4ee5\u8d8a\u4f86\u8d8a\u60b2\u89c0\u3002\",\n        scores: {\n          \"\u5b89\u5168\u611f\": 25,\n          \"\u81ea\u4fe1\": 35,\n          \"\u6a02\u89c0\": 30,\n          \"\u4fe1\u4efb\": 20,\n          \"\u4e3b\u52d5\u6027\": 40\n        }\n      },\n      \"C\": {\n        title: \"\u81ea\u5351\u578b\",\n        description: \"\u512a\u96c5\u800c\u7f8e\u9e97\u7684\u4f60\u6703\u8b93\u4eba\u89ba\u5f97\u4f60\u5f9e\u4e0d\u5c0d\u611b\u60c5\u60b2\u89c0\uff0c\u4f60\u4e0d\u9700\u8981\u60b2\u89c0\uff0c\u4f46\u662f\u6b63\u662f\u4f60\u7684\u5916\u8868\u548c\u76f8\u8c8c\u8b93\u4f60\u5c0d\u611b\u60c5\u4e00\u5411\u4e0d\u81ea\u4fe1\uff0c\u4f60\u7e3d\u662f\u6703\u6697\u81ea\u64d4\u5fc3\u5c0d\u65b9\u5230\u5e95\u6703\u4e0d\u6703\u6709\u96e2\u958b\u4f60\u7684\u60f3\u6cd5\u3002\u5982\u679c\u4f60\u7e3d\u662f\u64d4\u5fc3\u5c0d\u65b9\u96e2\u958b\u4f60\uff0c\u9019\u4ef6\u4e8b\u60c5\u53cd\u800c\u53ef\u80fd\u767c\u751f\uff0c\u58a8\u83f2\u5b9a\u5f8b\uff0c\u8aaa\u7684\u5c31\u662f\u8d8a\u64d4\u5fc3\u7684\u4e8b\u8d8a\u5bb9\u6613\u767c\u751f\u3002\",\n        scores: {\n          \"\u5b89\u5168\u611f\": 40,\n          \"\u81ea\u4fe1\": 20,\n          \"\u6a02\u89c0\": 45,\n          \"\u4fe1\u4efb\": 25,\n          \"\u4e3b\u52d5\u6027\": 50\n        }\n      },\n      \"D\": {\n        title: \"\u9a55\u50b2\u578b\",\n        description: \"\u9ad8\u50b2\u800c\u81ea\u5927\u6027\u683c\u7684\u4f60\u7e3d\u662f\u7d66\u4eba\u4e00\u7a2e\u4f60\u5f9e\u4f86\u90fd\u662f\u5929\u4e0d\u6015\u5730\u4e0d\u6015\u7684\u6027\u683c\uff0c\u4f46\u662f\u4f60\u7684\u5167\u5fc3\u624d\u77e5\u9053\u4f60\u662f\u600e\u6a23\u7684\u5b64\u7368\u548c\u6050\u61fc\uff0c\u4f60\u5bb3\u6015\u4f60\u7684\u8209\u52d5\u5e36\u7d66\u5c0d\u65b9\u7684\u662f\u8ca0\u64d4\u548c\u58d3\u529b\u5f9e\u800c\u96e2\u958b\u4f60\u3002\u5176\u5be6\u4f60\u4e0d\u5fc5\u90a3\u9ebc\u8b39\u614e\u505a\u4f60\u60f3\u505a\u7684\u4e8b\u8aaa\u4f60\u60f3\u8aaa\u7684\u8a71\uff0c\u4ed6\u611b\u7684\u5c31\u662f\u4f60\u672c\u8eab\u4f60\u5b8c\u5168\u6c92\u6709\u5fc5\u8981\u70ba\u5c0d\u65b9\u505a\u51fa\u4e0d\u5fc5\u8981\u7684\u6539\u8b8a\u3002\",\n        scores: {\n          \"\u5b89\u5168\u611f\": 50,\n          \"\u81ea\u4fe1\": 60,\n          \"\u6a02\u89c0\": 40,\n          \"\u4fe1\u4efb\": 35,\n          \"\u4e3b\u52d5\u6027\": 25\n        }\n      }\n    }\n  };\n\n  \/\/ Application State\n  class TestState {\n    constructor() {\n      this.currentQuestionIndex = 0;\n      this.answerHistory = [];\n      this.chartInstance = null;\n    }\n\n    reset() {\n      this.currentQuestionIndex = 0;\n      this.answerHistory = [];\n      if (this.chartInstance) {\n        this.chartInstance.destroy();\n        this.chartInstance = null;\n      }\n    }\n\n    addAnswer(questionIndex, optionIndex, next, resultValue) {\n      this.answerHistory.push({\n        questionIndex,\n        optionIndex,\n        next,\n        resultValue\n      });\n    }\n\n    goBack() {\n      if (this.answerHistory.length > 0) {\n        this.answerHistory.pop();\n        return this.answerHistory.length > 0 ? \n          this.answerHistory[this.answerHistory.length - 1].next : 0;\n      }\n      return 0;\n    }\n  }\n\n  \/\/ DOM Elements\n  class DOMElements {\n    constructor() {\n      this.introPage = document.getElementById('intro-page');\n      this.testPage = document.getElementById('test-page');\n      this.resultPage = document.getElementById('result-page');\n      this.startButton = document.getElementById('start-test');\n      this.prevButton = document.getElementById('prev-button');\n      this.retakeButton = document.getElementById('retake-button');\n      this.questionText = document.getElementById('question-text');\n      this.optionsContainer = document.getElementById('options-container');\n      this.progressFill = document.getElementById('progress-fill');\n      this.progressText = document.getElementById('progress-text');\n      this.resultType = document.getElementById('result-type');\n      this.resultText = document.getElementById('result-text');\n      this.resultChart = document.getElementById('result-chart');\n    }\n  }\n\n  \/\/ Test Controller\n  class TestController {\n    constructor() {\n      this.state = new TestState();\n      this.dom = new DOMElements();\n      this.init();\n    }\n\n    init() {\n      this.bindEvents();\n      this.showPage('intro');\n    }\n\n    bindEvents() {\n      this.dom.startButton.addEventListener('click', () => this.startTest());\n      this.dom.prevButton.addEventListener('click', () => this.goToPreviousQuestion());\n      this.dom.retakeButton.addEventListener('click', () => this.retakeTest());\n    }\n\n    showPage(page) {\n      \/\/ Hide all pages\n      [this.dom.introPage, this.dom.testPage, this.dom.resultPage].forEach(p => {\n        p.classList.remove('active');\n      });\n\n      \/\/ Show target page\n      const pageElement = page === 'intro' ? this.dom.introPage :\n                         page === 'test' ? this.dom.testPage :\n                         this.dom.resultPage;\n      pageElement.classList.add('active');\n\n      \/\/ Smooth scroll to top\n      setTimeout(() => {\n        pageElement.scrollIntoView({ behavior: 'smooth', block: 'start' });\n      }, 100);\n    }\n\n    startTest() {\n      this.state.reset();\n      this.showPage('test');\n      this.renderQuestion(0);\n    }\n\n    retakeTest() {\n      this.state.reset();\n      this.showPage('intro');\n    }\n\n    renderQuestion(index) {\n      const question = testConfig.questions[index];\n      if (!question) return;\n\n      this.state.currentQuestionIndex = index;\n      \n      \/\/ Update question text\n      this.dom.questionText.textContent = question.text;\n      \n      \/\/ Update progress\n      const progress = ((index + 1) \/ testConfig.questions.length) * 100;\n      this.dom.progressFill.style.width = `${progress}%`;\n      this.dom.progressText.textContent = `\u554f\u984c ${index + 1}\/${testConfig.questions.length}`;\n      \n      \/\/ Render options\n      this.renderOptions(question.options, index);\n      \n      \/\/ Update previous button visibility\n      this.dom.prevButton.style.display = this.state.answerHistory.length > 0 ? 'block' : 'none';\n    }\n\n    renderOptions(options, questionIndex) {\n      this.dom.optionsContainer.innerHTML = '';\n      \n      options.forEach((option, optionIndex) => {\n        const button = document.createElement('button');\n        button.className = 'option-button w-100';\n        button.textContent = option.text;\n        \n        button.addEventListener('click', () => {\n          this.selectOption(button, questionIndex, optionIndex, option);\n        });\n        \n        this.dom.optionsContainer.appendChild(button);\n      });\n    }\n\n    selectOption(button, questionIndex, optionIndex, option) {\n      \/\/ Visual feedback\n      document.querySelectorAll('.option-button').forEach(btn => {\n        btn.classList.remove('selected');\n      });\n      button.classList.add('selected');\n      \n      \/\/ Record answer\n      this.state.addAnswer(questionIndex, optionIndex, option.next, option.value);\n      \n      \/\/ Navigate to next question or show result\n      setTimeout(() => {\n        if (option.value) {\n          this.showResult(option.value);\n        } else if (option.next !== undefined) {\n          this.renderQuestion(option.next);\n        }\n      }, 300);\n    }\n\n    goToPreviousQuestion() {\n      const prevQuestionIndex = this.state.goBack();\n      this.renderQuestion(prevQuestionIndex);\n    }\n\n    showResult(resultKey) {\n      const result = testConfig.results[resultKey];\n      if (!result) return;\n\n      this.showPage('result');\n      \n      \/\/ Display result content\n      this.dom.resultType.textContent = result.title;\n      this.dom.resultText.textContent = result.description;\n      \n      \/\/ Create chart\n      this.createRadarChart(result.scores);\n    }\n\n    createRadarChart(scores) {\n      const ctx = this.dom.resultChart.getContext('2d');\n      \n      \/\/ Destroy existing chart\n      if (this.state.chartInstance) {\n        this.state.chartInstance.destroy();\n      }\n      \n      const labels = Object.keys(scores);\n      const data = Object.values(scores);\n      \n      this.state.chartInstance = new Chart(ctx, {\n        type: 'radar',\n        data: {\n          labels: labels,\n          datasets: [{\n            label: '\u4f60\u7684\u5f97\u5206',\n            data: data,\n            backgroundColor: 'rgba(13, 110, 253, 0.1)',\n            borderColor: 'rgba(13, 110, 253, 0.8)',\n            borderWidth: 2,\n            pointBackgroundColor: 'rgba(13, 110, 253, 1)',\n            pointBorderColor: '#fff',\n            pointHoverBackgroundColor: '#fff',\n            pointHoverBorderColor: 'rgba(13, 110, 253, 1)',\n            pointRadius: 6,\n            pointHoverRadius: 8\n          }]\n        },\n        options: {\n          responsive: true,\n          maintainAspectRatio: true,\n          plugins: {\n            legend: {\n              display: false\n            },\n            tooltip: {\n              backgroundColor: 'rgba(0, 0, 0, 0.8)',\n              titleFont: { size: 14 },\n              bodyFont: { size: 14 },\n              callbacks: {\n                label: (context) => `${context.label}: ${context.raw}%`\n              }\n            }\n          },\n          scales: {\n            r: {\n              beginAtZero: true,\n              max: 100,\n              ticks: {\n                stepSize: 20,\n                display: false\n              },\n              pointLabels: {\n                font: { size: 12 },\n                color: '#495057'\n              },\n              grid: {\n                color: 'rgba(0, 0, 0, 0.1)'\n              },\n              angleLines: {\n                color: 'rgba(0, 0, 0, 0.1)'\n              }\n            }\n          }\n        }\n      });\n    }\n  }\n\n  \/\/ Initialize the test when DOM is ready\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', () => new TestController());\n  } else {\n    new TestController();\n  }\n\n})();\n<\/script>","protected":false},"excerpt":{"rendered":"<p>\u60b2\u89c2\u5e38\u5e38\u4f1a\u5bfc\u81f4\u4e00\u4e2a\u4eba\u8d70\u5411\u5931\u8d25\u7684\u7ed3\u5c40\uff0c\u6240\u4ee5\u6211\u4eec\u8981\u5220\u9664\u81ea\u5df1\u5185\u5fc3\u7684\u60b2\u89c2\u7406\u8bba\uff0c\u4e0b\u9762\u7684\u6d4b\u8bd5\u4f1a\u544a\u8bc9\u4f60\uff0c\u4f60\u7684\u7231\u60c5\u60b2\u89c2\u8bba\u662f\u4ec0\u4e48\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":"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":[178,160],"tags":[],"class_list":["post-2383","post","type-post","status-publish","format-standard","hentry","category-love","category-attitude-scales"],"_links":{"self":[{"href":"https:\/\/xinliceyan.org\/zh\/wp-json\/wp\/v2\/posts\/2383","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=2383"}],"version-history":[{"count":10,"href":"https:\/\/xinliceyan.org\/zh\/wp-json\/wp\/v2\/posts\/2383\/revisions"}],"predecessor-version":[{"id":10311,"href":"https:\/\/xinliceyan.org\/zh\/wp-json\/wp\/v2\/posts\/2383\/revisions\/10311"}],"wp:attachment":[{"href":"https:\/\/xinliceyan.org\/zh\/wp-json\/wp\/v2\/media?parent=2383"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/xinliceyan.org\/zh\/wp-json\/wp\/v2\/categories?post=2383"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/xinliceyan.org\/zh\/wp-json\/wp\/v2\/tags?post=2383"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}