{"id":1901,"date":"2025-12-07T11:56:37","date_gmt":"2025-12-07T03:56:37","guid":{"rendered":"https:\/\/www.funpt.cn\/?page_id=1901"},"modified":"2026-10-28T13:19:32","modified_gmt":"2026-10-28T05:19:32","slug":"%e5%8a%9f%e8%83%bd%e6%80%a7%e8%b7%b3%e8%b7%83%e6%b5%8b%e8%af%95%e7%b3%bb%e7%bb%9f","status":"publish","type":"page","link":"https:\/\/www.funpt.cn\/?page_id=1901","title":{"rendered":"\u529f\u80fd\u6027\u8df3\u8dc3\u6d4b\u8bd5\u7cfb\u7edf"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1901\" class=\"elementor elementor-1901\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c0b893f e-flex e-con-boxed e-con e-parent\" data-id=\"c0b893f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-90d4d55 elementor-widget elementor-widget-html\" data-id=\"90d4d55\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div id=\"app\">\n<style>\n  #app {\n    --primary: #2563eb;\n    --primary-d: #1d4ed8;\n    --primary-color: #2563eb;\n    --secondary-color: #1d4ed8;\n    --success-color: #15803d;\n    --warning-color: #b45309;\n    --danger-color: #b91c1c;\n    --accent-color: #2563eb;\n    --ink: #0f172a;\n    --body: #334155;\n    --muted: #64748b;\n    --line: #e2e8f0;\n    --soft: #f8fafc;\n    max-width: 100%;\n    margin: 0 auto;\n    font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"PingFang SC\", \"Hiragino Sans GB\", \"Microsoft YaHei\", sans-serif;\n    color: var(--body);\n    font-size: 14.5px;\n    line-height: 1.75;\n    -webkit-text-size-adjust: 100%;\n  }\n  #app *, #app *::before, #app *::after { box-sizing: border-box; }\n  #app h1, #app h2, #app h3, #app h4, #app p, #app ul, #app li, #app label, #app table { margin: 0; padding: 0; }\n  #app ul { list-style: none; }\n  #app li { position: relative; padding-left: 15px; }\n  #app li::before {\n    content: \"\";\n    position: absolute;\n    left: 1px;\n    top: 0.72em;\n    width: 5px;\n    height: 5px;\n    border-radius: 50%;\n    background: #94a3b8;\n  }\n  #app ul ul { margin-top: 4px; }\n  #app ul ul li { color: var(--muted); font-size: 13.5px; }\n  #app strong { font-weight: 700; color: var(--ink); }\n  #app a { color: var(--primary-d); text-decoration: none; }\n\n  \/* ---------- \u5916\u58f3 ---------- *\/\n  #app .hop-card {\n    background: #fff;\n    border: 1px solid var(--line);\n    border-radius: 14px;\n    overflow: hidden;\n    box-shadow: 0 1px 3px rgba(15, 23, 42, 0.05);\n  }\n  #app .hop-head {\n    background: linear-gradient(135deg, #0f172a 0%, #1e3a8a 100%);\n    padding: 24px 28px;\n    display: flex;\n    align-items: flex-start;\n    justify-content: space-between;\n    gap: 14px;\n    flex-wrap: wrap;\n  }\n  #app .hop-head h1 {\n    font-size: 21px;\n    font-weight: 700;\n    color: #fff;\n    line-height: 1.35;\n    letter-spacing: 0.2px;\n  }\n  #app .hop-head p { font-size: 13.5px; color: #cbd5e1; margin-top: 6px; line-height: 1.5; }\n  #app .hop-badge {\n    font-size: 11.5px;\n    font-weight: 600;\n    letter-spacing: 0.6px;\n    color: #dbeafe;\n    background: rgba(255, 255, 255, 0.14);\n    border: 1px solid rgba(255, 255, 255, 0.22);\n    padding: 3px 10px;\n    border-radius: 999px;\n    white-space: nowrap;\n    margin-top: 2px;\n  }\n  #app .hop-body { padding: 6px 28px 20px; }\n  #app .hop-foot {\n    padding: 18px 28px;\n    border-top: 1px solid #eef2f7;\n    background: var(--soft);\n    font-size: 12.5px;\n    line-height: 1.75;\n    color: var(--muted);\n  }\n  #app .hop-foot p + p { margin-top: 6px; }\n  #app .hop-foot a { color: var(--primary-d); font-weight: 600; }\n  #app .hop-foot a:hover { text-decoration: underline; }\n\n  \/* ---------- \u5206\u533a ---------- *\/\n  #app .sec { padding: 22px 0; border-top: 1px solid #eef2f7; }\n  #app .sec:first-child { border-top: none; padding-top: 18px; }\n  #app .sec-title {\n    display: flex;\n    align-items: center;\n    gap: 9px;\n    font-size: 17px;\n    font-weight: 700;\n    color: var(--ink);\n    line-height: 1.35;\n    border-left: 3px solid var(--primary);\n    padding-left: 11px;\n    margin-bottom: 16px;\n  }\n  #app .sec-num {\n    font-size: 11.5px;\n    font-weight: 700;\n    color: var(--primary-d);\n    background: #eff6ff;\n    border: 1px solid #dbeafe;\n    border-radius: 5px;\n    padding: 1px 6px;\n    letter-spacing: 0.4px;\n  }\n  #app .grp-title {\n    display: flex;\n    align-items: center;\n    gap: 8px;\n    font-size: 14px;\n    font-weight: 700;\n    color: var(--ink);\n    margin: 2px 0 10px;\n  }\n  #app .grp-title::before {\n    content: \"\";\n    width: 6px;\n    height: 6px;\n    background: var(--primary);\n    transform: rotate(45deg);\n    flex: 0 0 auto;\n  }\n\n  \/* ---------- \u8868\u5355 ---------- *\/\n  #app .grid-2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }\n  #app .field { display: flex; flex-direction: column; gap: 6px; min-width: 0; }\n  #app .field label { font-size: 13px; font-weight: 600; color: #475569; }\n  #app input[type=\"text\"], #app input[type=\"number\"], #app input[type=\"date\"],\n  #app select, #app textarea {\n    width: 100%;\n    height: 42px;\n    padding: 0 12px;\n    font-family: inherit;\n    font-size: 14px;\n    color: var(--ink);\n    background: var(--soft);\n    border: 1.5px solid #cbd5e1;\n    border-radius: 8px;\n    transition: border-color 0.15s, box-shadow 0.15s, background 0.15s;\n    -webkit-appearance: none;\n    appearance: none;\n    line-height: normal;\n  }\n  #app input::placeholder { color: #94a3b8; }\n  #app input:focus, #app select:focus, #app textarea:focus {\n    outline: none;\n    border-color: var(--primary);\n    background: #fff;\n    box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.15);\n  }\n  #app select {\n    padding-right: 34px;\n    background-image: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath d='M6 9l6 6 6-6'\/%3E%3C\/svg%3E\");\n    background-repeat: no-repeat;\n    background-position: right 12px center;\n  }\n  #app input[type=\"date\"] { -webkit-appearance: auto; appearance: auto; }\n  #app .hint { font-size: 12.5px; color: var(--muted); line-height: 1.65; }\n\n  \/* ---------- \u6309\u94ae ---------- *\/\n  #app .btn, #app .btn-secondary, #app .btn-reset, #app .btn-success, #app .btn-info {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    gap: 6px;\n    height: 42px;\n    padding: 0 18px;\n    font-family: inherit;\n    font-size: 14px;\n    font-weight: 600;\n    line-height: 1;\n    white-space: nowrap;\n    border: 1px solid transparent;\n    border-radius: 8px;\n    cursor: pointer;\n    transition: background 0.15s, border-color 0.15s, color 0.15s, box-shadow 0.15s;\n  }\n  #app .btn { background: var(--primary); color: #fff; }\n  #app .btn:hover { background: var(--primary-d); box-shadow: 0 2px 6px rgba(37, 99, 235, 0.25); }\n  #app .btn-secondary, #app .btn-reset {\n    background: #f1f5f9;\n    color: #334155;\n    border-color: #e2e8f0;\n  }\n  #app .btn-secondary:hover, #app .btn-reset:hover { background: #e8eef5; border-color: #cbd5e1; color: #0f172a; }\n  #app .btn-info { background: #eff6ff; color: var(--primary-d); border-color: #bfdbfe; }\n  #app .btn-info:hover { background: #dbeafe; border-color: #93c5fd; }\n  #app .btn-success { background: #15803d; color: #fff; }\n  #app .btn-success:hover { background: #166534; }\n  #app .btn-row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin-top: 18px; }\n\n  \/* ---------- \u63d0\u793a\u6846 ---------- *\/\n  #app .info-box, #app .warning-box, #app .danger-box, #app .success-box {\n    border-radius: 10px;\n    border: 1px solid;\n    padding: 14px 16px;\n    font-size: 13.5px;\n    line-height: 1.75;\n    margin-bottom: 14px;\n  }\n  #app .info-box { background: var(--soft); border-color: var(--line); color: var(--body); }\n  #app .warning-box { background: #fffbeb; border-color: #fde68a; color: #92400e; }\n  #app .danger-box { background: #fef2f2; border-color: #fecaca; color: #991b1b; }\n  #app .success-box { background: #f0fdf4; border-color: #bbf7d0; color: #166534; }\n  #app .info-box p + p, #app .warning-box p + p, #app .danger-box p + p, #app .success-box p + p { margin-top: 8px; }\n  #app .info-box ul, #app .warning-box ul, #app .danger-box ul, #app .success-box ul { margin-top: 6px; }\n  #app .info-box strong, #app .warning-box strong, #app .danger-box strong, #app .success-box strong { color: inherit; }\n  #app .warning-box li::before, #app .danger-box li::before, #app .success-box li::before { background: currentColor; opacity: 0.55; }\n\n  \/* ---------- \u6298\u53e0\u9762\u677f ---------- *\/\n  #app .accordion { border: 1px solid var(--line); border-radius: 10px; overflow: hidden; margin-top: 14px; }\n  #app .accordion-header {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: 10px;\n    padding: 12px 14px;\n    background: var(--soft);\n    font-size: 13.5px;\n    font-weight: 600;\n    color: #334155;\n    cursor: pointer;\n    user-select: none;\n    transition: background 0.15s, color 0.15s;\n  }\n  #app .accordion-header:hover { background: #f1f5f9; }\n  #app .accordion-header.active { background: #eff6ff; color: var(--primary-d); }\n  #app .accordion-header i {\n    display: inline-block;\n    width: 8px;\n    height: 8px;\n    flex: 0 0 auto;\n    border-right: 2px solid currentColor;\n    border-bottom: 2px solid currentColor;\n    transform: rotate(45deg);\n    margin-right: 3px;\n    margin-top: -3px;\n    transition: transform 0.25s ease, margin 0.25s ease;\n  }\n  #app .accordion-header i.fa-chevron-up { transform: rotate(-135deg); margin-top: 3px; }\n  #app .accordion-content {\n    max-height: 0;\n    overflow: hidden;\n    padding: 0 14px;\n    font-size: 13.5px;\n    line-height: 1.75;\n    transition: max-height 0.28s ease;\n  }\n  #app .accordion-content.active { max-height: 4000px; padding: 14px; }\n  #app .accordion-content h4 {\n    font-size: 13.5px;\n    font-weight: 700;\n    color: var(--ink);\n    margin: 14px 0 6px;\n    padding-left: 9px;\n    border-left: 2px solid #bfdbfe;\n  }\n  #app .accordion-content h4:first-child { margin-top: 0; }\n\n  \/* ---------- \u6d4b\u8bd5\u9879\u76ee\u5757 ---------- *\/\n  #app .test-block {\n    border: 1px solid var(--line);\n    border-radius: 10px;\n    padding: 14px 16px 16px;\n    margin-bottom: 14px;\n  }\n  #app .test-block:last-of-type { margin-bottom: 0; }\n  #app .test-top {\n    display: flex;\n    align-items: flex-start;\n    justify-content: space-between;\n    gap: 8px 12px;\n    flex-wrap: wrap;\n  }\n  #app .test-name {\n    display: flex;\n    align-items: baseline;\n    gap: 7px;\n    flex-wrap: wrap;\n    font-size: 14.5px;\n    font-weight: 700;\n    color: var(--ink);\n    line-height: 1.4;\n  }\n  #app .test-en { font-size: 11.5px; font-weight: 600; color: var(--muted); letter-spacing: 0.3px; }\n  #app .test-tags { display: flex; gap: 6px; flex-wrap: wrap; }\n  #app .tag {\n    font-size: 11.5px;\n    font-weight: 600;\n    line-height: 1.6;\n    padding: 0 8px;\n    border-radius: 5px;\n    border: 1px solid #dbeafe;\n    background: #eff6ff;\n    color: var(--primary-d);\n    white-space: nowrap;\n  }\n  #app .tag.tag-alt { border-color: #fde68a; background: #fffbeb; color: #92400e; }\n  #app .test-desc { font-size: 13px; color: var(--muted); line-height: 1.65; margin: 6px 0 12px; }\n  #app .dir-head {\n    display: grid;\n    grid-template-columns: 62px 1fr;\n    gap: 10px;\n    align-items: center;\n    padding-bottom: 6px;\n    font-size: 11.5px;\n    font-weight: 600;\n    color: var(--muted);\n    letter-spacing: 0.3px;\n  }\n  #app .dir-head .cols { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }\n  #app .dir-head .cols span { text-align: center; }\n  #app .dir-row { display: grid; grid-template-columns: 62px 1fr; gap: 10px; align-items: center; }\n  #app .dir-row + .dir-row { margin-top: 8px; }\n  #app .dir-name { font-size: 13px; font-weight: 600; color: #475569; }\n  #app .dir-inputs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; min-width: 0; }\n  #app .dir-inputs input { text-align: center; padding: 0 6px; }\n\n  \/* ---------- \u7ed3\u679c ---------- *\/\n  #app .results-container { display: none; }\n  #app .results-header {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: 12px;\n    flex-wrap: wrap;\n    margin-bottom: 16px;\n  }\n  #app .results-title {\n    display: flex;\n    align-items: center;\n    gap: 9px;\n    font-size: 17px;\n    font-weight: 700;\n    color: var(--ink);\n    border-left: 3px solid var(--primary);\n    padding-left: 11px;\n    line-height: 1.35;\n  }\n  #app .results-actions { display: flex; gap: 8px; flex-wrap: wrap; }\n  #app .lsi-hero {\n    border: 1px solid #dbeafe;\n    background: linear-gradient(135deg, #f8fbff 0%, #eff6ff 100%);\n    border-radius: 12px;\n    padding: 16px 20px 18px;\n    text-align: center;\n    margin-bottom: 12px;\n  }\n  #app .lsi-hero-label { font-size: 12.5px; font-weight: 600; color: #475569; letter-spacing: 0.3px; }\n  #app .lsi-hero-value {\n    font-size: 38px;\n    font-weight: 700;\n    color: var(--primary-d);\n    line-height: 1.15;\n    margin: 2px 0 0;\n    font-variant-numeric: tabular-nums;\n    letter-spacing: -0.5px;\n  }\n  #app .lsi-hero-value em { font-size: 16px; font-style: normal; font-weight: 600; color: var(--muted); margin-left: 2px; }\n  #app .lsi-hero-note { font-size: 12px; color: var(--muted); margin-top: 4px; }\n  #app .lsi-pill {\n    display: inline-block;\n    font-size: 12px;\n    font-weight: 700;\n    line-height: 1.7;\n    padding: 0 10px;\n    border-radius: 999px;\n    margin-top: 6px;\n  }\n  #app .lsi-pill.ok { background: #f0fdf4; color: #166534; border: 1px solid #bbf7d0; }\n  #app .lsi-pill.warn { background: #fffbeb; color: #92400e; border: 1px solid #fde68a; }\n  #app .lsi-pill.bad { background: #fef2f2; color: #991b1b; border: 1px solid #fecaca; }\n  #app .results-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }\n  #app .result-card {\n    background: #fff;\n    border: 1px solid var(--line);\n    border-top: 3px solid var(--primary);\n    border-radius: 10px;\n    padding: 14px 12px;\n    text-align: center;\n  }\n  #app .result-value {\n    font-size: 23px;\n    font-weight: 700;\n    color: var(--primary-d);\n    line-height: 1.25;\n    margin: 4px 0 2px;\n    font-variant-numeric: tabular-nums;\n    letter-spacing: -0.2px;\n  }\n  #app .result-label { font-size: 12px; font-weight: 600; color: var(--muted); }\n\n  \/* ---------- \u8868\u683c ---------- *\/\n  #app .tbl-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; margin: 12px 0 4px; }\n  #app .results-table { width: 100%; min-width: 440px; border-collapse: collapse; font-size: 13px; background: #fff; }\n  #app th, #app td {\n    padding: 10px 8px;\n    text-align: center;\n    border-bottom: 1px solid #eef2f7;\n    font-variant-numeric: tabular-nums;\n  }\n  #app th {\n    background: var(--soft);\n    font-size: 12.5px;\n    font-weight: 700;\n    color: #475569;\n    border-bottom: 1px solid var(--line);\n    white-space: nowrap;\n  }\n  #app th:first-child, #app td:first-child { text-align: left; }\n  #app tbody tr:last-child td { border-bottom: none; }\n  #app tbody tr:hover td { background: #fbfdff; }\n  #app .standard-optimal { color: #15803d; font-weight: 600; }\n  #app .standard-pass { color: #b45309; font-weight: 600; }\n  #app .standard-below { color: #b91c1c; font-weight: 600; }\n\n  \/* ---------- \u56fe\u8868 ---------- *\/\n  #app .chart-container { position: relative; width: 100%; height: 300px; margin-top: 16px; }\n  #app .chart-container canvas { display: block; max-width: 100%; }\n  #app .chart-legend { display: flex; gap: 16px; justify-content: center; flex-wrap: wrap; margin-top: 8px; font-size: 12px; color: var(--muted); }\n  #app .chart-legend span { display: inline-flex; align-items: center; gap: 6px; }\n  #app .chart-legend i { width: 14px; height: 0; border-top: 2px dashed #15803d; }\n\n  \/* ---------- \u5de5\u5177\u7c7b ---------- *\/\n  #app .hidden { display: none !important; }\n  #app .text-center { text-align: center; }\n  #app .mt14 { margin-top: 14px; }\n  #app .mt-20 { margin-top: 20px; }\n\n  \/* ---------- \u54cd\u5e94\u5f0f ---------- *\/\n  @media (min-width: 720px) {\n    #app .results-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }\n  }\n  @media (max-width: 560px) {\n    #app .hop-head { padding: 20px 18px; }\n    #app .hop-head h1 { font-size: 18px; }\n    #app .hop-body { padding: 4px 18px 16px; }\n    #app .hop-foot { padding: 16px 18px; }\n    #app .grid-2 { grid-template-columns: 1fr; gap: 12px; }\n    #app .results-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }\n    #app .result-value { font-size: 20px; }\n    #app .lsi-hero-value { font-size: 32px; }\n    #app .btn-row { grid-template-columns: 1fr; }\n    #app .results-header { align-items: flex-start; }\n    #app .dir-head, #app .dir-row { grid-template-columns: 44px minmax(0, 1fr); gap: 8px; }\n    #app .dir-name { font-size: 12.5px; }\n    #app .dir-inputs input { padding: 0 4px; font-size: 13px; }\n    #app .btn, #app .btn-secondary, #app .btn-reset, #app .btn-success, #app .btn-info { padding: 0 14px; font-size: 13.5px; }\n    #app table { font-size: 12.5px; }\n    #app th, #app td { padding: 9px 5px; }\n    #app .chart-container { height: 260px; }\n  }\n  @media print {\n    #app.is-printing .hop-head, #app.is-printing .results-actions, #app.is-printing .btn-row { display: none; }\n    #app.is-printing .hop-card { border: none; box-shadow: none; }\n  }\n<\/style>\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/Chart.js\/4.4.1\/chart.umd.min.js\"><\/script>\n<div class=\"hop-card\">\n  <div class=\"hop-head\">\n    <div>\n      <h1>\u529f\u80fd\u6027\u8df3\u8dc3\u6d4b\u8bd5\u8bc4\u4f30\u7cfb\u7edf<\/h1>\n      <p>\u57fa\u4e8e Phil Plisky \u535a\u58eb\u7684\u91cd\u8fd4\u8fd0\u52a8\u51c6\u5907\u5ea6\u6d4b\u8bd5\u534f\u8bae \u00b7 \u80a2\u4f53\u5bf9\u79f0\u6307\u6570\uff08LSI\uff09\u8bc4\u4f30<\/p>\n    <\/div>\n    <span class=\"hop-badge\">HOP TEST<\/span>\n  <\/div>\n  <button class=\"nav-toggle\" id=\"menuToggle\" style=\"display:none\" aria-hidden=\"true\" tabindex=\"-1\"><\/button>\n  <div class=\"hop-body\">\n    <section class=\"sec\">\n      <h2 class=\"sec-title\"><span class=\"sec-num\">01<\/span>\u53d7\u8bd5\u8005\u4fe1\u606f<\/h2>\n      <div class=\"grid-2\">\n        <div class=\"field\"><label for=\"subjectName\">\u59d3\u540d<\/label><input type=\"text\" id=\"subjectName\" placeholder=\"\u8f93\u5165\u53d7\u8bd5\u8005\u59d3\u540d\"><\/div>\n        <div class=\"field\"><label for=\"testDate\">\u6d4b\u8bd5\u65e5\u671f<\/label><input type=\"date\" id=\"testDate\"><\/div>\n      <\/div>\n      <div class=\"grid-2 mt14\">\n        <div class=\"field\"><label for=\"age\">\u5e74\u9f84<\/label><input type=\"number\" id=\"age\" min=\"12\" max=\"60\" placeholder=\"\u5e74\u9f84\"><\/div>\n        <div class=\"field\"><label for=\"gender\">\u6027\u522b<\/label>\n          <select id=\"gender\">\n            <option value=\"\">\u9009\u62e9\u6027\u522b<\/option>\n            <option value=\"male\">\u7537\u6027<\/option>\n            <option value=\"female\">\u5973\u6027<\/option>\n          <\/select>\n        <\/div>\n      <\/div>\n      <div class=\"grid-2 mt14\">\n        <div class=\"field\"><label for=\"sportActivity\">\u8fd0\u52a8\u9879\u76ee<\/label>\n          <select id=\"sportActivity\">\n            <option value=\"\">\u9009\u62e9\u8fd0\u52a8\u9879\u76ee<\/option>\n            <option value=\"basketball\">\u7bee\u7403<\/option>\n            <option value=\"football\">\u7f8e\u5f0f\u8db3\u7403<\/option>\n            <option value=\"soccer\">\u8db3\u7403<\/option>\n            <option value=\"volleyball\">\u6392\u7403<\/option>\n            <option value=\"running\">\u8dd1\u6b65<\/option>\n            <option value=\"tennis\">\u7f51\u7403<\/option>\n            <option value=\"skiing\">\u6ed1\u96ea<\/option>\n            <option value=\"other\">\u5176\u4ed6<\/option>\n          <\/select>\n        <\/div>\n        <div class=\"field\"><label for=\"injurySide\">\u53d7\u4f24\u4fa7\uff08\u5982\u6709\uff09<\/label>\n          <select id=\"injurySide\">\n            <option value=\"none\">\u65e0\u53d7\u4f24 \/ \u53cc\u4fa7\u6b63\u5e38<\/option>\n            <option value=\"left\">\u5de6\u4fa7\u53d7\u4f24<\/option>\n            <option value=\"right\">\u53f3\u4fa7\u53d7\u4f24<\/option>\n            <option value=\"both\">\u53cc\u4fa7\u53d7\u4f24<\/option>\n          <\/select>\n        <\/div>\n      <\/div>\n      <div class=\"field mt14\"><label for=\"injuryType\">\u53d7\u4f24\u7c7b\u578b \/ \u624b\u672f\u53f2<\/label>\n        <input type=\"text\" id=\"injuryType\" placeholder=\"\u4f8b\u5982\uff1aACL \u91cd\u5efa\u672f\u540e 6 \u4e2a\u6708\u3001\u8e1d\u5173\u8282\u626d\u4f24\u7b49\">\n      <\/div>\n    <\/section>\n    <section class=\"sec\">\n      <h2 class=\"sec-title\"><span class=\"sec-num\">02<\/span>\u6d4b\u8bd5\u8bf4\u660e\u4e0e\u534f\u8bae<\/h2>\n      <div class=\"info-box\">\n        <p><strong>\u6d4b\u8bd5\u76ee\u7684\uff1a<\/strong>\u8bc4\u4f30\u4e0b\u80a2\u529b\u91cf\u3001\u5bf9\u79f0\u6027\u4e0e\u795e\u7ecf\u808c\u8089\u63a7\u5236\u80fd\u529b\uff0c\u5e2e\u52a9\u5224\u65ad\u8fd0\u52a8\u5458\u662f\u5426\u5177\u5907\u91cd\u8fd4\u8fd0\u52a8\u7684\u6761\u4ef6\u3002<\/p>\n        <p><strong>\u5224\u5b9a\u6807\u51c6\uff1a<\/strong>\u4f9d\u636e Phil Plisky \u535a\u58eb\u7684\u7814\u7a76\uff0c\u80a2\u4f53\u5bf9\u79f0\u6307\u6570\uff08LSI\uff09\u2265 90% \u901a\u5e38\u88ab\u89c6\u4e3a\u91cd\u8fd4\u8fd0\u52a8\u7684\u57fa\u672c\u95e8\u69db\u3002<\/p>\n        <p><strong>\u8ba1\u7b97\u65b9\u5f0f\uff1a<\/strong>LSI =\uff08\u60a3\u4fa7 \u00f7 \u5065\u4fa7\uff09\u00d7 100%\uff1b\u53cc\u4fa7\u5747\u5065\u5eb7\u65f6\u53d6\uff08\u8f83\u5dee\u4fa7 \u00f7 \u8f83\u597d\u4fa7\uff09\u00d7 100%\u3002\u8ba1\u65f6\u7c7b\u9879\u76ee\u65f6\u95f4\u8d8a\u77ed\u8d8a\u597d\uff0c\u6545\u53d6\uff08\u8f83\u5feb\u65f6\u95f4 \u00f7 \u8f83\u6162\u65f6\u95f4\uff09\u3002<\/p>\n      <\/div>\n      <div class=\"accordion\">\n        <div class=\"accordion-header\" id=\"protocolHeader\">\u67e5\u770b\u6d4b\u8bd5\u534f\u8bae<i class=\"fa-chevron-down\"><\/i><\/div>\n        <div class=\"accordion-content\" id=\"protocolContent\">\n          <h4>\u5355\u817f\u8df3\u6d4b\u8bd5\uff08Single Leg Hop Test\uff09<\/h4>\n          <ul>\n            <li>\u4ece\u8d77\u59cb\u7ebf\u5f00\u59cb\uff0c\u5355\u817f\u7ad9\u7acb\uff0c\u53cc\u624b\u53ef\u81ea\u7531\u6446\u52a8<\/li>\n            <li>\u5c3d\u53ef\u80fd\u8fdc\u5730\u5411\u524d\u8df3\u8dc3\uff0c\u5355\u811a\u843d\u5730\u5e76\u4fdd\u6301\u5e73\u8861\u81f3\u5c11 2 \u79d2<\/li>\n            <li>\u6d4b\u91cf\u4ece\u8d77\u59cb\u7ebf\u5230\u843d\u5730\u811a\u540e\u8ddf\u7684\u8ddd\u79bb<\/li>\n            <li>\u6bcf\u4fa7\u8fdb\u884c 3 \u6b21\u5c1d\u8bd5\uff0c\u8bb0\u5f55\u6700\u4f73\u6210\u7ee9<\/li>\n          <\/ul>\n          <h4>\u4ea4\u53c9\u8df3\u6d4b\u8bd5\uff08Crossover Hop Test\uff09<\/h4>\n          <ul>\n            <li>\u5728\u5730\u9762\u4e0a\u6807\u8bb0\u4e00\u6761\u76f4\u7ebf<\/li>\n            <li>\u4ece\u8d77\u59cb\u7ebf\u5f00\u59cb\uff0c\u5355\u817f\u7ad9\u7acb<\/li>\n            <li>\u5411\u524d\u8df3\u8dc3\u5e76\u4ea4\u66ff\u8d8a\u8fc7\u4e2d\u7ebf<\/li>\n            <li>\u8fde\u7eed\u8fdb\u884c 3 \u6b21\u8df3\u8dc3\uff0c\u6d4b\u91cf\u603b\u8ddd\u79bb<\/li>\n            <li>\u6bcf\u4fa7\u8fdb\u884c 3 \u6b21\u5c1d\u8bd5\uff0c\u8bb0\u5f55\u6700\u4f73\u6210\u7ee9<\/li>\n          <\/ul>\n          <h4>\u4e09\u8fde\u8df3\u6d4b\u8bd5\uff08Triple Hop Test\uff09<\/h4>\n          <ul>\n            <li>\u4ece\u8d77\u59cb\u7ebf\u5f00\u59cb\uff0c\u5355\u817f\u7ad9\u7acb<\/li>\n            <li>\u8fde\u7eed\u8fdb\u884c 3 \u6b21\u6700\u5927\u8ddd\u79bb\u8df3\u8dc3<\/li>\n            <li>\u6bcf\u6b21\u843d\u5730\u540e\u5fc5\u987b\u7acb\u5373\u8fdb\u884c\u4e0b\u4e00\u6b21\u8df3\u8dc3<\/li>\n            <li>\u6d4b\u91cf 3 \u6b21\u8df3\u8dc3\u7684\u603b\u8ddd\u79bb<\/li>\n            <li>\u6bcf\u4fa7\u8fdb\u884c 3 \u6b21\u5c1d\u8bd5\uff0c\u8bb0\u5f55\u6700\u4f73\u6210\u7ee9<\/li>\n          <\/ul>\n          <h4>\u8ba1\u65f6\u8df3\u6d4b\u8bd5\uff08Timed Hop Test\uff09<\/h4>\n          <ul>\n            <li>\u8bbe\u7f6e 6 \u7c73\u8ddd\u79bb\u7684\u8d77\u70b9\u4e0e\u7ec8\u70b9\u7ebf<\/li>\n            <li>\u4ece\u8d77\u59cb\u7ebf\u5f00\u59cb\uff0c\u5355\u817f\u7ad9\u7acb<\/li>\n            <li>\u542c\u5230\u5f00\u59cb\u4fe1\u53f7\u540e\uff0c\u5c3d\u53ef\u80fd\u5feb\u5730\u5355\u817f\u8df3\u5230\u7ec8\u70b9\u7ebf<\/li>\n            <li>\u6d4b\u91cf\u4ece\u5f00\u59cb\u5230\u8d8a\u8fc7\u7ec8\u70b9\u7ebf\u7684\u65f6\u95f4<\/li>\n            <li>\u6bcf\u4fa7\u8fdb\u884c 3 \u6b21\u5c1d\u8bd5\uff0c\u8bb0\u5f55\u6700\u4f73\u65f6\u95f4<\/li>\n          <\/ul>\n        <\/div>\n      <\/div>\n    <\/section>\n    <section class=\"sec\">\n      <h2 class=\"sec-title\"><span class=\"sec-num\">03<\/span>\u6d4b\u8bd5\u6570\u636e\u5f55\u5165<\/h2>\n      <div class=\"info-box\">\n        <p><strong>\u6d4b\u91cf\u5355\u4f4d\uff1a<\/strong>\u8ddd\u79bb\u7c7b\u6d4b\u8bd5\u7edf\u4e00\u4f7f\u7528\u5398\u7c73\uff08cm\uff09\uff0c\u8ba1\u65f6\u7c7b\u6d4b\u8bd5\u4f7f\u7528\u79d2\uff08s\uff09\u3002<\/p>\n        <p><strong>\u8bb0\u5f55\u89c4\u5219\uff1a<\/strong>\u8ddd\u79bb\u7c7b\u53d6 3 \u6b21\u4e2d\u7684\u6700\u4f73\u6210\u7ee9\uff1b\u8ba1\u65f6\u7c7b\u53d6 3 \u6b21\u4e2d\u7684\u6700\u77ed\u65f6\u95f4\u3002<\/p>\n      <\/div>\n<div class=\"test-block\"><div class=\"test-top\"><div class=\"test-name\">\u5355\u817f\u8df3\u6d4b\u8bd5<span class=\"test-en\">Single Leg Hop<\/span><\/div><div class=\"test-tags\"><span class=\"tag\">\u8ddd\u79bb cm<\/span><span class=\"tag\">3 \u6b21\u5c1d\u8bd5<\/span><\/div><\/div><p class=\"test-desc\">\u8bc4\u4f30\u5355\u817f\u6700\u5927\u5411\u524d\u8df3\u8dc3\u8ddd\u79bb\uff0c\u53cd\u6620\u4e0b\u80a2\u7206\u53d1\u529b\u4e0e\u843d\u5730\u7a33\u5b9a\u6027\u3002<\/p><div class=\"dir-head\"><span><\/span><div class=\"cols\"><span>\u5c1d\u8bd5 1<\/span><span>\u5c1d\u8bd5 2<\/span><span>\u5c1d\u8bd5 3<\/span><\/div><\/div><div class=\"dir-row\"><div class=\"dir-name\">\u53f3\u817f<\/div><div class=\"dir-inputs\"><input type=\"number\" id=\"slhRight1\" min=\"0\" step=\"0.1\" placeholder=\"0.0\"><input type=\"number\" id=\"slhRight2\" min=\"0\" step=\"0.1\" placeholder=\"0.0\"><input type=\"number\" id=\"slhRight3\" min=\"0\" step=\"0.1\" placeholder=\"0.0\"><\/div><\/div><div class=\"dir-row\"><div class=\"dir-name\">\u5de6\u817f<\/div><div class=\"dir-inputs\"><input type=\"number\" id=\"slhLeft1\" min=\"0\" step=\"0.1\" placeholder=\"0.0\"><input type=\"number\" id=\"slhLeft2\" min=\"0\" step=\"0.1\" placeholder=\"0.0\"><input type=\"number\" id=\"slhLeft3\" min=\"0\" step=\"0.1\" placeholder=\"0.0\"><\/div><\/div><\/div>\n<div class=\"test-block\"><div class=\"test-top\"><div class=\"test-name\">\u4ea4\u53c9\u8df3\u6d4b\u8bd5<span class=\"test-en\">Crossover Hop<\/span><\/div><div class=\"test-tags\"><span class=\"tag\">\u8ddd\u79bb cm<\/span><span class=\"tag\">3 \u6b21\u5c1d\u8bd5<\/span><\/div><\/div><p class=\"test-desc\">\u8bc4\u4f30\u6a2a\u5411\u63a7\u5236\u80fd\u529b\u4e0e\u52a8\u6001\u7a33\u5b9a\u6027\uff0c\u9700\u8fde\u7eed\u8df3\u8dc3\u5e76\u4ea4\u66ff\u8d8a\u8fc7\u4e2d\u7ebf\u3002<\/p><div class=\"dir-head\"><span><\/span><div class=\"cols\"><span>\u5c1d\u8bd5 1<\/span><span>\u5c1d\u8bd5 2<\/span><span>\u5c1d\u8bd5 3<\/span><\/div><\/div><div class=\"dir-row\"><div class=\"dir-name\">\u53f3\u817f<\/div><div class=\"dir-inputs\"><input type=\"number\" id=\"cohRight1\" min=\"0\" step=\"0.1\" placeholder=\"0.0\"><input type=\"number\" id=\"cohRight2\" min=\"0\" step=\"0.1\" placeholder=\"0.0\"><input type=\"number\" id=\"cohRight3\" min=\"0\" step=\"0.1\" placeholder=\"0.0\"><\/div><\/div><div class=\"dir-row\"><div class=\"dir-name\">\u5de6\u817f<\/div><div class=\"dir-inputs\"><input type=\"number\" id=\"cohLeft1\" min=\"0\" step=\"0.1\" placeholder=\"0.0\"><input type=\"number\" id=\"cohLeft2\" min=\"0\" step=\"0.1\" placeholder=\"0.0\"><input type=\"number\" id=\"cohLeft3\" min=\"0\" step=\"0.1\" placeholder=\"0.0\"><\/div><\/div><\/div>\n<div class=\"test-block\"><div class=\"test-top\"><div class=\"test-name\">\u4e09\u8fde\u8df3\u6d4b\u8bd5<span class=\"test-en\">Triple Hop<\/span><\/div><div class=\"test-tags\"><span class=\"tag\">\u8ddd\u79bb cm<\/span><span class=\"tag\">3 \u6b21\u5c1d\u8bd5<\/span><\/div><\/div><p class=\"test-desc\">\u8bc4\u4f30\u8fde\u7eed\u8df3\u8dc3\u80fd\u529b\u4e0e\u529b\u91cf\u8010\u529b\uff0c\u6d4b\u91cf 3 \u6b21\u8fde\u8d2f\u8df3\u8dc3\u7684\u603b\u8ddd\u79bb\u3002<\/p><div class=\"dir-head\"><span><\/span><div class=\"cols\"><span>\u5c1d\u8bd5 1<\/span><span>\u5c1d\u8bd5 2<\/span><span>\u5c1d\u8bd5 3<\/span><\/div><\/div><div class=\"dir-row\"><div class=\"dir-name\">\u53f3\u817f<\/div><div class=\"dir-inputs\"><input type=\"number\" id=\"thRight1\" min=\"0\" step=\"0.1\" placeholder=\"0.0\"><input type=\"number\" id=\"thRight2\" min=\"0\" step=\"0.1\" placeholder=\"0.0\"><input type=\"number\" id=\"thRight3\" min=\"0\" step=\"0.1\" placeholder=\"0.0\"><\/div><\/div><div class=\"dir-row\"><div class=\"dir-name\">\u5de6\u817f<\/div><div class=\"dir-inputs\"><input type=\"number\" id=\"thLeft1\" min=\"0\" step=\"0.1\" placeholder=\"0.0\"><input type=\"number\" id=\"thLeft2\" min=\"0\" step=\"0.1\" placeholder=\"0.0\"><input type=\"number\" id=\"thLeft3\" min=\"0\" step=\"0.1\" placeholder=\"0.0\"><\/div><\/div><\/div>\n<div class=\"test-block\"><div class=\"test-top\"><div class=\"test-name\">\u8ba1\u65f6\u8df3\u6d4b\u8bd5<span class=\"test-en\">Timed Hop \u00b7 6 m<\/span><\/div><div class=\"test-tags\"><span class=\"tag tag-alt\">\u8ba1\u65f6 s<\/span><span class=\"tag\">3 \u6b21\u5c1d\u8bd5<\/span><\/div><\/div><p class=\"test-desc\">\u8bc4\u4f30\u5355\u817f\u5feb\u901f\u79fb\u52a8\u80fd\u529b\uff0c\u6d4b\u91cf\u5b8c\u6210 6 \u7c73\u5355\u817f\u8df3\u8dc3\u6240\u9700\u65f6\u95f4\u3002<\/p><div class=\"dir-head\"><span><\/span><div class=\"cols\"><span>\u5c1d\u8bd5 1<\/span><span>\u5c1d\u8bd5 2<\/span><span>\u5c1d\u8bd5 3<\/span><\/div><\/div><div class=\"dir-row\"><div class=\"dir-name\">\u53f3\u817f<\/div><div class=\"dir-inputs\"><input type=\"number\" id=\"timedRight1\" min=\"0\" step=\"0.01\" placeholder=\"0.0\"><input type=\"number\" id=\"timedRight2\" min=\"0\" step=\"0.01\" placeholder=\"0.0\"><input type=\"number\" id=\"timedRight3\" min=\"0\" step=\"0.01\" placeholder=\"0.0\"><\/div><\/div><div class=\"dir-row\"><div class=\"dir-name\">\u5de6\u817f<\/div><div class=\"dir-inputs\"><input type=\"number\" id=\"timedLeft1\" min=\"0\" step=\"0.01\" placeholder=\"0.0\"><input type=\"number\" id=\"timedLeft2\" min=\"0\" step=\"0.01\" placeholder=\"0.0\"><input type=\"number\" id=\"timedLeft3\" min=\"0\" step=\"0.01\" placeholder=\"0.0\"><\/div><\/div><\/div>\n      <div class=\"btn-row\">\n        <button class=\"btn\" id=\"calculateBtn\">\u8ba1\u7b97\u6d4b\u8bd5\u7ed3\u679c<\/button>\n        <button class=\"btn-reset\" id=\"resetBtn\">\u91cd\u7f6e\u6240\u6709\u6570\u636e<\/button>\n      <\/div>\n    <\/section>\n    <section class=\"sec results-container\" id=\"resultsContainer\">\n      <div class=\"results-header\">\n        <h2 class=\"results-title\"><span class=\"sec-num\">04<\/span>\u6d4b\u8bd5\u7ed3\u679c<\/h2>\n        <div class=\"results-actions\">\n          <button class=\"btn-secondary\" id=\"exportBtn\">\u5bfc\u51fa\u7ed3\u679c<\/button>\n          <button class=\"btn-secondary\" id=\"printBtn\">\u6253\u5370<\/button>\n        <\/div>\n      <\/div>\n      <div class=\"lsi-hero\">\n        <div class=\"lsi-hero-label\">\u6574\u4f53\u80a2\u4f53\u5bf9\u79f0\u6307\u6570\uff08LSI\uff09<\/div>\n        <div class=\"lsi-hero-value\"><span id=\"overallLSI\">0.0<\/span><em>%<\/em><\/div>\n        <div class=\"lsi-pill bad\" id=\"overallPill\">\u672a\u8fbe\u6807<\/div>\n        <div class=\"lsi-hero-note\">\u91cd\u8fd4\u8fd0\u52a8\u53c2\u8003\u9608\u503c\uff1aLSI \u2265 90%<\/div>\n      <\/div>\n      <div class=\"results-grid\">\n        <div class=\"result-card\"><div class=\"result-label\">\u5355\u817f\u8df3 LSI<\/div><div class=\"result-value\" id=\"slhLSI\">0.0<\/div><div class=\"result-label\">%<\/div><\/div>\n        <div class=\"result-card\"><div class=\"result-label\">\u4ea4\u53c9\u8df3 LSI<\/div><div class=\"result-value\" id=\"cohLSI\">0.0<\/div><div class=\"result-label\">%<\/div><\/div>\n        <div class=\"result-card\"><div class=\"result-label\">\u4e09\u8fde\u8df3 LSI<\/div><div class=\"result-value\" id=\"thLSI\">0.0<\/div><div class=\"result-label\">%<\/div><\/div>\n        <div class=\"result-card\"><div class=\"result-label\">\u8ba1\u65f6\u8df3 LSI<\/div><div class=\"result-value\" id=\"timedLSI\">0.0<\/div><div class=\"result-label\">%<\/div><\/div>\n      <\/div>\n      <h3 class=\"grp-title mt-20\">\u8be6\u7ec6\u7ed3\u679c\u8868<\/h3>\n      <div class=\"tbl-wrap\">\n        <table class=\"results-table\">\n          <thead>\n            <tr><th>\u6d4b\u8bd5\u9879\u76ee<\/th><th>\u53f3\u817f\u6210\u7ee9<\/th><th>\u5de6\u817f\u6210\u7ee9<\/th><th>\u5bf9\u79f0\u6307\u6570<\/th><th>\u8bc4\u4f30<\/th><\/tr>\n          <\/thead>\n          <tbody>\n            <tr><td>\u5355\u817f\u8df3\uff08cm\uff09<\/td><td id=\"slhRightResult\">0.0<\/td><td id=\"slhLeftResult\">0.0<\/td><td id=\"slhLSIResult\">0.0%<\/td><td id=\"slhAssessment\">-<\/td><\/tr>\n            <tr><td>\u4ea4\u53c9\u8df3\uff08cm\uff09<\/td><td id=\"cohRightResult\">0.0<\/td><td id=\"cohLeftResult\">0.0<\/td><td id=\"cohLSIResult\">0.0%<\/td><td id=\"cohAssessment\">-<\/td><\/tr>\n            <tr><td>\u4e09\u8fde\u8df3\uff08cm\uff09<\/td><td id=\"thRightResult\">0.0<\/td><td id=\"thLeftResult\">0.0<\/td><td id=\"thLSIResult\">0.0%<\/td><td id=\"thAssessment\">-<\/td><\/tr>\n            <tr><td>\u8ba1\u65f6\u8df3\uff08s\uff09<\/td><td id=\"timedRightResult\">0.00<\/td><td id=\"timedLeftResult\">0.00<\/td><td id=\"timedLSIResult\">0.0%<\/td><td id=\"timedAssessment\">-<\/td><\/tr>\n          <\/tbody>\n        <\/table>\n      <\/div>\n      <div id=\"lsiAlert\" class=\"danger-box mt14\" style=\"display: none;\">\n        <p><strong>\u6ce8\u610f\uff1a<\/strong>\u80a2\u4f53\u5bf9\u79f0\u6307\u6570\u4f4e\u4e8e 90%\uff0c\u63d0\u793a\u53ef\u80fd\u5b58\u5728\u529f\u80fd\u6027\u4e0d\u5bf9\u79f0\uff0c\u5efa\u8bae\u8fdb\u4e00\u6b65\u8bc4\u4f30\u5e76\u9488\u5bf9\u6027\u5eb7\u590d\u8bad\u7ec3\u3002<\/p>\n      <\/div>\n      <div id=\"returnToSportAlert\" class=\"success-box mt14\" style=\"display: none;\">\n        <p><strong>\u826f\u597d\uff1a<\/strong>\u80a2\u4f53\u5bf9\u79f0\u6307\u6570\u8fbe\u5230\u6216\u8d85\u8fc7 90%\uff0c\u7b26\u5408\u91cd\u8fd4\u8fd0\u52a8\u7684\u57fa\u672c\u6807\u51c6\u3002<\/p>\n      <\/div>\n      <div class=\"chart-container\">\n        <canvas id=\"resultsChart\"><\/canvas>\n      <\/div>\n      <div class=\"chart-legend\"><span><i><\/i>\u91cd\u8fd4\u8fd0\u52a8\u6807\u51c6 90%<\/span><\/div>\n      <div class=\"accordion mt14\">\n        <div class=\"accordion-header\" id=\"recommendationHeader\">\u67e5\u770b\u5efa\u8bae\u4e0e\u89e3\u91ca<i class=\"fa-chevron-down\"><\/i><\/div>\n        <div class=\"accordion-content\" id=\"recommendationContent\">\n          <div id=\"recommendations\">\n            <p>\u6839\u636e\u6d4b\u8bd5\u7ed3\u679c\uff0c\u5efa\u8bae\uff1a<\/p>\n            <ul><li>\u5b8c\u6210\u6d4b\u8bd5\u8ba1\u7b97\u4ee5\u83b7\u53d6\u4e2a\u6027\u5316\u5efa\u8bae<\/li><\/ul>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/section>\n    <section class=\"sec\">\n      <h2 class=\"sec-title\"><span class=\"sec-num\">05<\/span>\u5feb\u901f\u793a\u4f8b<\/h2>\n      <p>\u70b9\u51fb\u4e0b\u65b9\u6309\u94ae\u586b\u5145\u4e00\u4efd\u793a\u4f8b\u6570\u636e\uff0c\u7528\u4e8e\u4f53\u9a8c\u5b8c\u6574\u8ba1\u7b97\u3001\u56fe\u8868\u4e0e\u5bfc\u51fa\u6d41\u7a0b\u3002<\/p>\n      <div class=\"mt14\"><button class=\"btn-secondary\" id=\"fillSampleBtn\">\u586b\u5145\u793a\u4f8b\u6570\u636e<\/button><\/div>\n    <\/section>\n  <\/div>\n  <div class=\"hop-foot\">\n    <p>\u00a9 2023 \u529f\u80fd\u6027\u8df3\u8dc3\u6d4b\u8bd5\u8bc4\u4f30\u7cfb\u7edf \u00b7 \u57fa\u4e8e Phil Plisky \u535a\u58eb\u7684\u91cd\u8fd4\u8fd0\u52a8\u6d4b\u8bd5\u534f\u8bae<\/p>\n    <p>\u4ec5\u4f9b\u4e13\u4e1a\u533b\u7597\u4eba\u5458\u4f7f\u7528\u3002\u672c\u5de5\u5177\u4ec5\u4f5c\u8f85\u52a9\u8bc4\u4f30\uff0c\u4e0d\u80fd\u66ff\u4ee3\u4e13\u4e1a\u533b\u7597\u8bca\u65ad\u3002<\/p>\n    <p>\u53c2\u8003\uff1aPlisky PJ, et al. <em>Hop Testing Protocols for Return to Sport<\/em>. 2021.<\/p>\n    <p><a href=\"https:\/\/www.funpt.cn\/?page_id=1880\">\u4e0b\u80a2 Y-Balance \u6d4b\u8bd5<\/a> \u00b7 <a href=\"https:\/\/www.funpt.cn\/?page_id=1891\">\u4e0a\u80a2 Y-Balance \u6d4b\u8bd5<\/a> \u00b7 <a href=\"https:\/\/www.funpt.cn\/?page_id=2127\">PHV \u8ba1\u7b97\u5668<\/a><\/p>\n  <\/div>\n<\/div>\n<script>\/\/ \u8bbe\u7f6e\u9ed8\u8ba4\u6d4b\u8bd5\u65e5\u671f\u4e3a\u4eca\u5929\n        document.getElementById('testDate').valueAsDate = new Date();\n        \/\/ \u6298\u53e0\u9762\u677f\u529f\u80fd\n        document.getElementById('protocolHeader').addEventListener('click', function() {\n            const content = document.getElementById('protocolContent');\n            const icon = this.querySelector('i');\n            content.classList.toggle('active');\n            this.classList.toggle('active');\n            if (content.classList.contains('active')) {\n                icon.classList.remove('fa-chevron-down');\n                icon.classList.add('fa-chevron-up');\n            } else {\n                icon.classList.remove('fa-chevron-up');\n                icon.classList.add('fa-chevron-down');\n            }\n        });\n        document.getElementById('recommendationHeader').addEventListener('click', function() {\n            const content = document.getElementById('recommendationContent');\n            const icon = this.querySelector('i');\n            content.classList.toggle('active');\n            this.classList.toggle('active');\n            if (content.classList.contains('active')) {\n                icon.classList.remove('fa-chevron-down');\n                icon.classList.add('fa-chevron-up');\n            } else {\n                icon.classList.remove('fa-chevron-up');\n                icon.classList.add('fa-chevron-down');\n            }\n        });\n        \/\/ \u8ba1\u7b97\u6309\u94ae\u4e8b\u4ef6\n        document.getElementById('calculateBtn').addEventListener('click', calculateResults);\n        \/\/ \u91cd\u7f6e\u6309\u94ae\u4e8b\u4ef6\n        document.getElementById('resetBtn').addEventListener('click', function() {\n            if (confirm(\"\u786e\u5b9a\u8981\u91cd\u7f6e\u6240\u6709\u6d4b\u8bd5\u6570\u636e\u5417\uff1f\")) {\n                resetForm();\n            }\n        });\n        \/\/ \u5bfc\u51fa\u6309\u94ae\u4e8b\u4ef6\n        document.getElementById('exportBtn').addEventListener('click', exportResults);\n        \/\/ \u6253\u5370\u6309\u94ae\u4e8b\u4ef6\n        document.getElementById('printBtn').addEventListener('click', function() {\n            document.getElementById('app').classList.add('is-printing');\n            window.print();\n            setTimeout(function () { document.getElementById('app').classList.remove('is-printing'); }, 400);\n        });\n        \/\/ \u793a\u4f8b\u6570\u636e\u6309\u94ae\u4e8b\u4ef6\n        document.getElementById('fillSampleBtn').addEventListener('click', fillSampleData);\n        \/\/ \u83dc\u5355\u5207\u6362\u6309\u94ae\uff08\u79fb\u52a8\u7aef\uff09\n        document.getElementById('menuToggle').addEventListener('click', function() {\n            alert(\"\u79fb\u52a8\u7aef\u83dc\u5355\u529f\u80fd\uff08\u793a\u4f8b\uff09\");\n        });\n        \/\/ \u56fe\u8868\u53d8\u91cf\n        let resultsChart = null;\n        \/\/ \u8ba1\u7b97\u8df3\u8dc3\u6d4b\u8bd5\u7ed3\u679c\n        function calculateResults() {\n            \/\/ \u83b7\u53d6\u53d7\u8bd5\u8005\u4fe1\u606f\n            const subjectName = document.getElementById('subjectName').value;\n            const injurySide = document.getElementById('injurySide').value;\n            \/\/ \u9a8c\u8bc1\u8f93\u5165\n            if (!subjectName) {\n                alert(\"\u8bf7\u8f93\u5165\u53d7\u8bd5\u8005\u59d3\u540d\");\n                return;\n            }\n            \/\/ \u8ba1\u7b97\u6bcf\u4e2a\u6d4b\u8bd5\u7684\u6700\u4f73\u6210\u7ee9\n            \/\/ \u5355\u817f\u8df3\u6d4b\u8bd5\n            const slhRight = Math.max(\n                parseFloat(document.getElementById('slhRight1').value) || 0,\n                parseFloat(document.getElementById('slhRight2').value) || 0,\n                parseFloat(document.getElementById('slhRight3').value) || 0\n            );\n            const slhLeft = Math.max(\n                parseFloat(document.getElementById('slhLeft1').value) || 0,\n                parseFloat(document.getElementById('slhLeft2').value) || 0,\n                parseFloat(document.getElementById('slhLeft3').value) || 0\n            );\n            \/\/ \u4ea4\u53c9\u8df3\u6d4b\u8bd5\n            const cohRight = Math.max(\n                parseFloat(document.getElementById('cohRight1').value) || 0,\n                parseFloat(document.getElementById('cohRight2').value) || 0,\n                parseFloat(document.getElementById('cohRight3').value) || 0\n            );\n            const cohLeft = Math.max(\n                parseFloat(document.getElementById('cohLeft1').value) || 0,\n                parseFloat(document.getElementById('cohLeft2').value) || 0,\n                parseFloat(document.getElementById('cohLeft3').value) || 0\n            );\n            \/\/ \u4e09\u8fde\u8df3\u6d4b\u8bd5\n            const thRight = Math.max(\n                parseFloat(document.getElementById('thRight1').value) || 0,\n                parseFloat(document.getElementById('thRight2').value) || 0,\n                parseFloat(document.getElementById('thRight3').value) || 0\n            );\n            const thLeft = Math.max(\n                parseFloat(document.getElementById('thLeft1').value) || 0,\n                parseFloat(document.getElementById('thLeft2').value) || 0,\n                parseFloat(document.getElementById('thLeft3').value) || 0\n            );\n            \/\/ \u8ba1\u65f6\u8df3\u6d4b\u8bd5\uff08\u65f6\u95f4\u8d8a\u77ed\u8d8a\u597d\uff0c\u6240\u4ee5\u53d6\u6700\u5c0f\u503c\uff09\n            const timedRight = Math.min(\n                parseFloat(document.getElementById('timedRight1').value) || Infinity,\n                parseFloat(document.getElementById('timedRight2').value) || Infinity,\n                parseFloat(document.getElementById('timedRight3').value) || Infinity\n            );\n            const timedLeft = Math.min(\n                parseFloat(document.getElementById('timedLeft1').value) || Infinity,\n                parseFloat(document.getElementById('timedLeft2').value) || Infinity,\n                parseFloat(document.getElementById('timedLeft3').value) || Infinity\n            );\n            \/\/ \u9a8c\u8bc1\u6d4b\u8bd5\u6570\u636e\n            if (slhRight === 0 && slhLeft === 0 && cohRight === 0 && cohLeft === 0 && \n                thRight === 0 && thLeft === 0 && timedRight === Infinity && timedLeft === Infinity) {\n                alert(\"\u8bf7\u81f3\u5c11\u8f93\u5165\u4e00\u4e2a\u6d4b\u8bd5\u7684\u6570\u636e\");\n                return;\n            }\n            \/\/ \u8ba1\u7b97\u5bf9\u79f0\u6307\u6570(LSI)\n            let slhLSI, cohLSI, thLSI, timedLSI;\n            \/\/ \u6839\u636e\u53d7\u4f24\u4fa7\u786e\u5b9aLSI\u8ba1\u7b97\u65b9\u5f0f\n            if (injurySide === 'left') {\n                \/\/ \u5de6\u4fa7\u53d7\u4f24\uff0c\u5de6\u4fa7\u4e3a\u60a3\u4fa7\n                slhLSI = slhLeft > 0 ? (slhLeft \/ slhRight) * 100 : 0;\n                cohLSI = cohLeft > 0 ? (cohLeft \/ cohRight) * 100 : 0;\n                thLSI = thLeft > 0 ? (thLeft \/ thRight) * 100 : 0;\n                \/\/ \u5bf9\u4e8e\u8ba1\u65f6\u6d4b\u8bd5\uff0c\u65f6\u95f4\u8d8a\u77ed\u8d8a\u597d\uff0c\u6240\u4ee5\u7528\u5065\u4fa7\/\u60a3\u4fa7\n                timedLSI = timedLeft !== Infinity && timedRight !== Infinity ? (timedRight \/ timedLeft) * 100 : 0;\n            } else if (injurySide === 'right') {\n                \/\/ \u53f3\u4fa7\u53d7\u4f24\uff0c\u53f3\u4fa7\u4e3a\u60a3\u4fa7\n                slhLSI = slhRight > 0 ? (slhRight \/ slhLeft) * 100 : 0;\n                cohLSI = cohRight > 0 ? (cohRight \/ cohLeft) * 100 : 0;\n                thLSI = thRight > 0 ? (thRight \/ thLeft) * 100 : 0;\n                \/\/ \u5bf9\u4e8e\u8ba1\u65f6\u6d4b\u8bd5\uff0c\u65f6\u95f4\u8d8a\u77ed\u8d8a\u597d\uff0c\u6240\u4ee5\u7528\u5065\u4fa7\/\u60a3\u4fa7\n                timedLSI = timedRight !== Infinity && timedLeft !== Infinity ? (timedLeft \/ timedRight) * 100 : 0;\n            } else {\n                \/\/ \u65e0\u53d7\u4f24\u6216\u53cc\u4fa7\u53d7\u4f24\uff0c\u53d6\u8f83\u5dee\u4fa7\/\u8f83\u597d\u4fa7\n                slhLSI = slhRight > 0 && slhLeft > 0 ? (Math.min(slhRight, slhLeft) \/ Math.max(slhRight, slhLeft)) * 100 : 0;\n                cohLSI = cohRight > 0 && cohLeft > 0 ? (Math.min(cohRight, cohLeft) \/ Math.max(cohRight, cohLeft)) * 100 : 0;\n                thLSI = thRight > 0 && thLeft > 0 ? (Math.min(thRight, thLeft) \/ Math.max(thRight, thLeft)) * 100 : 0;\n                \/\/ \u5bf9\u4e8e\u8ba1\u65f6\u6d4b\u8bd5\uff0c\u65f6\u95f4\u8d8a\u77ed\u8d8a\u597d\uff0c\u6240\u4ee5\u53d6\u8f83\u597d\u65f6\u95f4\/\u8f83\u5dee\u65f6\u95f4\n                if (timedRight !== Infinity && timedLeft !== Infinity) {\n                    const betterTime = Math.min(timedRight, timedLeft);\n                    const worseTime = Math.max(timedRight, timedLeft);\n                    timedLSI = (betterTime \/ worseTime) * 100;\n                } else {\n                    timedLSI = 0;\n                }\n            }\n            \/\/ \u8ba1\u7b97\u6574\u4f53LSI\uff08\u5e73\u5747\u503c\uff09\n            const validLSIs = [];\n            if (slhLSI > 0) validLSIs.push(slhLSI);\n            if (cohLSI > 0) validLSIs.push(cohLSI);\n            if (thLSI > 0) validLSIs.push(thLSI);\n            if (timedLSI > 0) validLSIs.push(timedLSI);\n            const overallLSI = validLSIs.length > 0 ? \n                validLSIs.reduce((a, b) => a + b) \/ validLSIs.length : 0;\n            \/\/ \u66f4\u65b0\u7ed3\u679c\u663e\u793a\n            document.getElementById('overallLSI').textContent = overallLSI.toFixed(1);\n            (function () {\n                var p = document.getElementById('overallPill');\n                if (!p) return;\n                var s = overallLSI >= 90 ? ['\u8fbe\u6807', 'ok'] : (overallLSI >= 85 ? ['\u63a5\u8fd1\u8fbe\u6807', 'warn'] : ['\u672a\u8fbe\u6807', 'bad']);\n                p.textContent = s[0];\n                p.className = 'lsi-pill ' + s[1];\n            })();\n            document.getElementById('slhLSI').textContent = slhLSI.toFixed(1);\n            document.getElementById('cohLSI').textContent = cohLSI.toFixed(1);\n            document.getElementById('thLSI').textContent = thLSI.toFixed(1);\n            var timedCard = document.getElementById('timedLSI');\n            if (timedCard) timedCard.textContent = timedLSI.toFixed(1);\n            \/\/ \u66f4\u65b0\u8be6\u7ec6\u6570\u636e\n            document.getElementById('slhRightResult').textContent = slhRight > 0 ? slhRight.toFixed(1) : \"-\";\n            document.getElementById('slhLeftResult').textContent = slhLeft > 0 ? slhLeft.toFixed(1) : \"-\";\n            document.getElementById('slhLSIResult').textContent = slhLSI > 0 ? slhLSI.toFixed(1) + \"%\" : \"-\";\n            document.getElementById('slhAssessment').innerHTML = getAssessmentHTML(slhLSI);\n            document.getElementById('cohRightResult').textContent = cohRight > 0 ? cohRight.toFixed(1) : \"-\";\n            document.getElementById('cohLeftResult').textContent = cohLeft > 0 ? cohLeft.toFixed(1) : \"-\";\n            document.getElementById('cohLSIResult').textContent = cohLSI > 0 ? cohLSI.toFixed(1) + \"%\" : \"-\";\n            document.getElementById('cohAssessment').innerHTML = getAssessmentHTML(cohLSI);\n            document.getElementById('thRightResult').textContent = thRight > 0 ? thRight.toFixed(1) : \"-\";\n            document.getElementById('thLeftResult').textContent = thLeft > 0 ? thLeft.toFixed(1) : \"-\";\n            document.getElementById('thLSIResult').textContent = thLSI > 0 ? thLSI.toFixed(1) + \"%\" : \"-\";\n            document.getElementById('thAssessment').innerHTML = getAssessmentHTML(thLSI);\n            const timedRightResult = timedRight !== Infinity ? timedRight.toFixed(2) : \"-\";\n            const timedLeftResult = timedLeft !== Infinity ? timedLeft.toFixed(2) : \"-\";\n            document.getElementById('timedRightResult').textContent = timedRightResult;\n            document.getElementById('timedLeftResult').textContent = timedLeftResult;\n            document.getElementById('timedLSIResult').textContent = timedLSI > 0 ? timedLSI.toFixed(1) + \"%\" : \"-\";\n            document.getElementById('timedAssessment').innerHTML = getAssessmentHTML(timedLSI);\n            \/\/ \u663e\u793a\u8b66\u544a\u4fe1\u606f\n            const lsiAlert = document.getElementById('lsiAlert');\n            const returnToSportAlert = document.getElementById('returnToSportAlert');\n            if (overallLSI > 0 && overallLSI < 90) {\n                lsiAlert.style.display = 'block';\n                returnToSportAlert.style.display = 'none';\n            } else if (overallLSI >= 90) {\n                lsiAlert.style.display = 'none';\n                returnToSportAlert.style.display = 'block';\n            } else {\n                lsiAlert.style.display = 'none';\n                returnToSportAlert.style.display = 'none';\n            }\n            \/\/ \u663e\u793a\u7ed3\u679c\u5bb9\u5668\n            document.getElementById('resultsContainer').style.display = 'block';\n            \/\/ \u751f\u6210\u5efa\u8bae\n            generateRecommendations(overallLSI, slhLSI, cohLSI, thLSI, timedLSI, injurySide);\n            \/\/ \u7ed8\u5236\u56fe\u8868\n            drawChart(slhLSI, cohLSI, thLSI, timedLSI, overallLSI);\n            \/\/ \u6eda\u52a8\u5230\u7ed3\u679c\u533a\u57df\n            document.getElementById('resultsContainer').scrollIntoView({ behavior: 'smooth' });\n        }\n        \/\/ \u83b7\u53d6\u8bc4\u4f30HTML\n        function getAssessmentHTML(lsi) {\n            if (lsi === 0) return \"-\";\n            if (lsi >= 90) {\n                return '<span class=\"standard-optimal\">\u4f18\u79c0<\/span>';\n            } else if (lsi >= 85) {\n                return '<span class=\"standard-pass\">\u826f\u597d<\/span>';\n            } else if (lsi >= 80) {\n                return '<span class=\"standard-pass\">\u4e00\u822c<\/span>';\n            } else {\n                return '<span class=\"standard-below\">\u9700\u6539\u8fdb<\/span>';\n            }\n        }\n        \/\/ \u751f\u6210\u5efa\u8bae\n        function generateRecommendations(overallLSI, slhLSI, cohLSI, thLSI, timedLSI, injurySide) {\n            const recommendations = document.getElementById('recommendations');\n            let recommendationHTML = \"<p>\u6839\u636e\u6d4b\u8bd5\u7ed3\u679c\uff0c\u5efa\u8bae\uff1a<\/p><ul>\";\n            \/\/ \u6839\u636e\u6574\u4f53LSI\u7ed9\u51fa\u603b\u4f53\u5efa\u8bae\n            if (overallLSI >= 90) {\n                recommendationHTML += \"<li>\u80a2\u4f53\u5bf9\u79f0\u6027\u826f\u597d\uff0c\u5df2\u8fbe\u5230\u91cd\u8fd4\u8fd0\u52a8\u7684\u57fa\u672c\u6807\u51c6<\/li>\";\n                recommendationHTML += \"<li>\u5efa\u8bae\u7ee7\u7eed\u8fdb\u884c\u4e13\u9879\u8fd0\u52a8\u8bad\u7ec3\u548c\u6e10\u8fdb\u6027\u8d1f\u8377\u8bad\u7ec3<\/li>\";\n                recommendationHTML += \"<li>\u5b9a\u671f\u76d1\u6d4b\u5bf9\u79f0\u6307\u6570\uff0c\u786e\u4fdd\u7ef4\u6301\u572890%\u4ee5\u4e0a<\/li>\";\n            } else if (overallLSI >= 85) {\n                recommendationHTML += \"<li>\u80a2\u4f53\u5bf9\u79f0\u6027\u63a5\u8fd1\u6807\u51c6\uff0c\u4f46\u4ecd\u9700\u8fdb\u4e00\u6b65\u6539\u5584<\/li>\";\n                recommendationHTML += \"<li>\u5efa\u8bae\u589e\u52a0\u9488\u5bf9\u8f83\u5f31\u4fa7\u7684\u4e13\u9879\u529b\u91cf\u8bad\u7ec3<\/li>\";\n                recommendationHTML += \"<li>\u7ee7\u7eed\u8fdb\u884c\u529f\u80fd\u6027\u8df3\u8dc3\u8bad\u7ec3\uff0c\u91cd\u70b9\u5173\u6ce8\u5bf9\u79f0\u6027<\/li>\";\n            } else if (overallLSI >= 80) {\n                recommendationHTML += \"<li>\u80a2\u4f53\u5bf9\u79f0\u6027\u9700\u8981\u663e\u8457\u6539\u5584<\/li>\";\n                recommendationHTML += \"<li>\u5efa\u8bae\u6682\u505c\u9ad8\u5f3a\u5ea6\u8fd0\u52a8\u8bad\u7ec3\uff0c\u4e13\u6ce8\u4e8e\u5eb7\u590d\u8bad\u7ec3<\/li>\";\n                recommendationHTML += \"<li>\u589e\u52a0\u8f83\u5f31\u4fa7\u7684\u5355\u817f\u7a33\u5b9a\u6027\u8bad\u7ec3\u548c\u529b\u91cf\u8bad\u7ec3<\/li>\";\n            } else {\n                recommendationHTML += \"<li>\u80a2\u4f53\u5bf9\u79f0\u6027\u660e\u663e\u4e0d\u8db3\uff0c\u5b58\u5728\u518d\u53d7\u4f24\u98ce\u9669<\/li>\";\n                recommendationHTML += \"<li>\u4e0d\u5efa\u8bae\u91cd\u8fd4\u8fd0\u52a8\uff0c\u9700\u8981\u7cfb\u7edf\u7684\u5eb7\u590d\u8bad\u7ec3<\/li>\";\n                recommendationHTML += \"<li>\u5efa\u8bae\u54a8\u8be2\u7269\u7406\u6cbb\u7597\u5e08\u5236\u5b9a\u4e2a\u6027\u5316\u5eb7\u590d\u8ba1\u5212<\/li>\";\n            }\n            \/\/ \u6839\u636e\u5177\u4f53\u6d4b\u8bd5\u7ed3\u679c\u7ed9\u51fa\u9488\u5bf9\u6027\u5efa\u8bae\n            const lowTests = [];\n            if (slhLSI > 0 && slhLSI < 85) lowTests.push(\"\u5355\u817f\u8df3\");\n            if (cohLSI > 0 && cohLSI < 85) lowTests.push(\"\u4ea4\u53c9\u8df3\");\n            if (thLSI > 0 && thLSI < 85) lowTests.push(\"\u4e09\u8fde\u8df3\");\n            if (timedLSI > 0 && timedLSI < 85) lowTests.push(\"\u8ba1\u65f6\u8df3\");\n            if (lowTests.length > 0) {\n                recommendationHTML += `<li>\u91cd\u70b9\u5173\u6ce8\u4ee5\u4e0b\u6d4b\u8bd5\u7684\u6539\u5584\uff1a${lowTests.join(\"\u3001\")}<\/li>`;\n                if (lowTests.includes(\"\u5355\u817f\u8df3\")) {\n                    recommendationHTML += \"<li>\u5355\u817f\u8df3\u6d4b\u8bd5\u4e0d\u8db3\uff1a\u52a0\u5f3a\u5355\u817f\u7206\u53d1\u529b\u548c\u843d\u5730\u7a33\u5b9a\u6027\u8bad\u7ec3<\/li>\";\n                }\n                if (lowTests.includes(\"\u4ea4\u53c9\u8df3\")) {\n                    recommendationHTML += \"<li>\u4ea4\u53c9\u8df3\u6d4b\u8bd5\u4e0d\u8db3\uff1a\u52a0\u5f3a\u6a2a\u5411\u79fb\u52a8\u80fd\u529b\u548c\u52a8\u6001\u7a33\u5b9a\u6027\u8bad\u7ec3<\/li>\";\n                }\n                if (lowTests.includes(\"\u4e09\u8fde\u8df3\")) {\n                    recommendationHTML += \"<li>\u4e09\u8fde\u8df3\u6d4b\u8bd5\u4e0d\u8db3\uff1a\u52a0\u5f3a\u8fde\u7eed\u8df3\u8dc3\u80fd\u529b\u548c\u529b\u91cf\u8010\u529b\u8bad\u7ec3<\/li>\";\n                }\n                if (lowTests.includes(\"\u8ba1\u65f6\u8df3\")) {\n                    recommendationHTML += \"<li>\u8ba1\u65f6\u8df3\u6d4b\u8bd5\u4e0d\u8db3\uff1a\u52a0\u5f3a\u5feb\u901f\u79fb\u52a8\u80fd\u529b\u548c\u795e\u7ecf\u808c\u8089\u63a7\u5236\u8bad\u7ec3<\/li>\";\n                }\n            }\n            \/\/ \u6839\u636e\u53d7\u4f24\u4fa7\u7ed9\u51fa\u5efa\u8bae\n            if (injurySide === 'left' || injurySide === 'right') {\n                const injuredSide = injurySide === 'left' ? '\u5de6\u4fa7' : '\u53f3\u4fa7';\n                recommendationHTML += `<li>\u9488\u5bf9${injuredSide}\uff08\u53d7\u4f24\u4fa7\uff09\u8fdb\u884c\u4e13\u9879\u5eb7\u590d\u8bad\u7ec3<\/li>`;\n                recommendationHTML += `<li>\u9010\u6b65\u589e\u52a0${injuredSide}\u7684\u8d1f\u91cd\u548c\u529f\u80fd\u6027\u8bad\u7ec3<\/li>`;\n            }\n            recommendationHTML += \"<\/ul>\";\n            recommendations.innerHTML = recommendationHTML;\n            \/\/ \u786e\u4fdd\u5efa\u8bae\u9762\u677f\u5c55\u5f00\n            document.getElementById('recommendationContent').classList.add('active');\n            document.getElementById('recommendationHeader').classList.add('active');\n            document.getElementById('recommendationHeader').querySelector('i').classList.remove('fa-chevron-down');\n            document.getElementById('recommendationHeader').querySelector('i').classList.add('fa-chevron-up');\n        }\n        \/\/ \u7ed8\u5236\u56fe\u8868\n        function drawChart(slhLSI, cohLSI, thLSI, timedLSI, overallLSI) {\n            if (typeof Chart === 'undefined') {\n                var box = document.querySelector('.chart-container');\n                if (box) { box.innerHTML = '<p class=\"hint\">\u56fe\u8868\u7ec4\u4ef6\u5c1a\u672a\u52a0\u8f7d\u5b8c\u6210\uff0c\u8bf7\u786e\u8ba4\u7f51\u7edc\u7545\u901a\u540e\u91cd\u65b0\u70b9\u51fb\u8ba1\u7b97\u3002<\/p>'; }\n                return;\n            }\n            Chart.defaults.font.family = '-apple-system, BlinkMacSystemFont, \"Segoe UI\", \"PingFang SC\", \"Microsoft YaHei\", sans-serif';\n            Chart.defaults.color = '#64748b';\n            const ctx = document.getElementById('resultsChart').getContext('2d');\n            \/\/ \u5982\u679c\u5df2\u6709\u56fe\u8868\uff0c\u5148\u9500\u6bc1\n            if (resultsChart) {\n                resultsChart.destroy();\n            }\n            \/\/ \u51c6\u5907\u6570\u636e\n            const labels = [];\n            const data = [];\n            const colors = [];\n            if (slhLSI > 0) {\n                labels.push('\u5355\u817f\u8df3');\n                data.push(slhLSI);\n                colors.push(slhLSI >= 90 ? '#15803d' : (slhLSI >= 85 ? '#b45309' : '#b91c1c'));\n            }\n            if (cohLSI > 0) {\n                labels.push('\u4ea4\u53c9\u8df3');\n                data.push(cohLSI);\n                colors.push(cohLSI >= 90 ? '#15803d' : (cohLSI >= 85 ? '#b45309' : '#b91c1c'));\n            }\n            if (thLSI > 0) {\n                labels.push('\u4e09\u8fde\u8df3');\n                data.push(thLSI);\n                colors.push(thLSI >= 90 ? '#15803d' : (thLSI >= 85 ? '#b45309' : '#b91c1c'));\n            }\n            if (timedLSI > 0) {\n                labels.push('\u8ba1\u65f6\u8df3');\n                data.push(timedLSI);\n                colors.push(timedLSI >= 90 ? '#15803d' : (timedLSI >= 85 ? '#b45309' : '#b91c1c'));\n            }\n            \/\/ \u521b\u5efa\u65b0\u56fe\u8868\n            resultsChart = new Chart(ctx, {\n                type: 'bar',\n                data: {\n                    labels: labels,\n                    datasets: [{\n                        label: '\u5bf9\u79f0\u6307\u6570(LSI) %',\n                        data: data,\n                        backgroundColor: colors,\n                        borderColor: colors,\n                        borderWidth: 1,\n                        borderRadius: 4,\n                        maxBarThickness: 46\n                    },\n                    {\n                        label: '\u91cd\u8fd4\u8fd0\u52a8\u6807\u51c6',\n                        type: 'line',\n                        data: labels.map(function () { return 90; }),\n                        borderColor: '#15803d',\n                        borderWidth: 1.5,\n                        borderDash: [5, 4],\n                        pointRadius: 0,\n                        fill: false,\n                        order: 0\n                    }]\n                },\n                options: {\n                    responsive: true,\n                    maintainAspectRatio: false,\n                    layout: { padding: { left: 6, right: 8, top: 6 } },\n                    scales: {\n                        y: {\n                            beginAtZero: true,\n                            max: 100,\n                            title: {\n                                display: true,\n                                text: '\u5bf9\u79f0\u6307\u6570(LSI) %'\n                            },\n                            grid: {\n                                color: '#e2e8f0'\n                            }\n                        },\n                        x: {\n                            grid: {\n                                display: false\n                            }\n                        }\n                    },\n                    plugins: {\n                        legend: {\n                            display: false\n                        },\n                        tooltip: {\n                            callbacks: {\n                                label: function(context) {\n                                    return `${context.dataset.label}: ${context.parsed.y.toFixed(1)}%`;\n                                }\n                            }\n                        }\n                    },\n                    annotation: {\n                        annotations: {\n                            line1: {\n                                type: 'line',\n                                yMin: 90,\n                                yMax: 90,\n                                borderColor: '#15803d',\n                                borderWidth: 2,\n                                borderDash: [5, 5],\n                                label: {\n                                    display: true,\n                                    content: '\u91cd\u8fd4\u8fd0\u52a8\u6807\u51c6 (90%)',\n                                    position: 'end'\n                                }\n                            }\n                        }\n                    }\n                }\n            });\n        }\n        \/\/ \u91cd\u7f6e\u8868\u5355\n        function resetForm() {\n            \/\/ \u91cd\u7f6e\u8f93\u5165\u5b57\u6bb5\n            const inputs = document.querySelectorAll('#app input[type=\"text\"], #app input[type=\"number\"], #app input[type=\"date\"]');\n            inputs.forEach(input => {\n                if (input.id !== 'testDate') {\n                    input.value = '';\n                }\n            });\n            \/\/ \u91cd\u7f6e\u9009\u62e9\u5b57\u6bb5\n            document.getElementById('gender').value = '';\n            document.getElementById('sportActivity').value = '';\n            document.getElementById('injurySide').value = 'none';\n            document.getElementById('injuryType').value = '';\n            \/\/ \u8bbe\u7f6e\u9ed8\u8ba4\u65e5\u671f\n            document.getElementById('testDate').valueAsDate = new Date();\n            \/\/ \u9690\u85cf\u7ed3\u679c\u5bb9\u5668\n            document.getElementById('resultsContainer').style.display = 'none';\n            \/\/ \u9500\u6bc1\u56fe\u8868\n            if (resultsChart) {\n                resultsChart.destroy();\n                resultsChart = null;\n            }\n        }\n        \/\/ \u5bfc\u51fa\u7ed3\u679c\n        function exportResults() {\n            const subjectName = document.getElementById('subjectName').value || \"\u672a\u547d\u540d\u53d7\u8bd5\u8005\";\n            const testDate = document.getElementById('testDate').value || new Date().toISOString().split('T')[0];\n            const age = document.getElementById('age').value || \"\u672a\u6307\u5b9a\";\n            const gender = document.getElementById('gender').value === \"male\" ? \"\u7537\u6027\" : \n                          document.getElementById('gender').value === \"female\" ? \"\u5973\u6027\" : \"\u672a\u6307\u5b9a\";\n            const sportActivity = document.getElementById('sportActivity').value || \"\u672a\u6307\u5b9a\";\n            const injurySide = document.getElementById('injurySide').value;\n            const injuryType = document.getElementById('injuryType').value || \"\u65e0\";\n            let exportContent = `\u529f\u80fd\u6027\u8df3\u8dc3\u6d4b\u8bd5\u8bc4\u4f30\u62a5\u544a\\n`;\n            exportContent += `====================\\n\\n`;\n            exportContent += `\u53d7\u8bd5\u8005\u4fe1\u606f:\\n`;\n            exportContent += `\u59d3\u540d: ${subjectName}\\n`;\n            exportContent += `\u6d4b\u8bd5\u65e5\u671f: ${testDate}\\n`;\n            exportContent += `\u5e74\u9f84: ${age}\\n`;\n            exportContent += `\u6027\u522b: ${gender}\\n`;\n            exportContent += `\u8fd0\u52a8\u9879\u76ee: ${sportActivity}\\n`;\n            exportContent += `\u53d7\u4f24\u4fa7: ${injurySide === 'left' ? '\u5de6\u4fa7' : injurySide === 'right' ? '\u53f3\u4fa7' : injurySide === 'both' ? '\u53cc\u4fa7' : '\u65e0'}\\n`;\n            exportContent += `\u53d7\u4f24\u7c7b\u578b\/\u624b\u672f\u53f2: ${injuryType}\\n\\n`;\n            \/\/ \u6d4b\u8bd5\u7ed3\u679c\n            if (document.getElementById('resultsContainer').style.display === 'block') {\n                exportContent += `\u8df3\u8dc3\u6d4b\u8bd5\u7ed3\u679c:\\n`;\n                exportContent += `-----------------\\n`;\n                exportContent += `\u6574\u4f53\u5bf9\u79f0\u6307\u6570(LSI): ${document.getElementById('overallLSI').textContent}%\\n`;\n                exportContent += `\u5355\u817f\u8df3\u5bf9\u79f0\u6307\u6570: ${document.getElementById('slhLSI').textContent}%\\n`;\n                exportContent += `\u4ea4\u53c9\u8df3\u5bf9\u79f0\u6307\u6570: ${document.getElementById('cohLSI').textContent}%\\n`;\n                exportContent += `\u4e09\u8fde\u8df3\u5bf9\u79f0\u6307\u6570: ${document.getElementById('thLSI').textContent}%\\n\\n`;\n                exportContent += `\u8be6\u7ec6\u6570\u636e:\\n`;\n                exportContent += `\u6d4b\u8bd5\u9879\u76ee\\t\\t\u53f3\u817f\u6210\u7ee9\\t\u5de6\u817f\u6210\u7ee9\\t\u5bf9\u79f0\u6307\u6570\\t\u8bc4\u4f30\u7ed3\u679c\\n`;\n                exportContent += `\u5355\u817f\u8df3\\t\\t${document.getElementById('slhRightResult').textContent}\\t\\t${document.getElementById('slhLeftResult').textContent}\\t\\t${document.getElementById('slhLSIResult').textContent}\\t\\t${document.getElementById('slhAssessment').textContent}\\n`;\n                exportContent += `\u4ea4\u53c9\u8df3\\t\\t${document.getElementById('cohRightResult').textContent}\\t\\t${document.getElementById('cohLeftResult').textContent}\\t\\t${document.getElementById('cohLSIResult').textContent}\\t\\t${document.getElementById('cohAssessment').textContent}\\n`;\n                exportContent += `\u4e09\u8fde\u8df3\\t\\t${document.getElementById('thRightResult').textContent}\\t\\t${document.getElementById('thLeftResult').textContent}\\t\\t${document.getElementById('thLSIResult').textContent}\\t\\t${document.getElementById('thAssessment').textContent}\\n`;\n                exportContent += `\u8ba1\u65f6\u8df3\\t\\t${document.getElementById('timedRightResult').textContent}\\t\\t${document.getElementById('timedLeftResult').textContent}\\t\\t${document.getElementById('timedLSIResult').textContent}\\t\\t${document.getElementById('timedAssessment').textContent}\\n`;\n            }\n            exportContent += `\\n\\n\u8bc4\u4f30\u6807\u51c6:\\n`;\n            exportContent += `\u80a2\u4f53\u5bf9\u79f0\u6307\u6570(LSI) \u2265 90%: \u7b26\u5408\u91cd\u8fd4\u8fd0\u52a8\u6807\u51c6\\n`;\n            exportContent += `\u80a2\u4f53\u5bf9\u79f0\u6307\u6570(LSI) < 90%: \u9700\u8981\u8fdb\u4e00\u6b65\u5eb7\u590d\u8bad\u7ec3\\n`;\n            exportContent += `\u80a2\u4f53\u5bf9\u79f0\u6307\u6570(LSI) < 85%: \u5b58\u5728\u518d\u53d7\u4f24\u98ce\u9669\uff0c\u4e0d\u5efa\u8bae\u91cd\u8fd4\u8fd0\u52a8\\n\\n`;\n            exportContent += `\u6ce8: \u672c\u62a5\u544a\u57fa\u4e8ePhil Plisky\u535a\u58eb\u7684\u529f\u80fd\u6027\u8df3\u8dc3\u6d4b\u8bd5\u534f\u8bae\u751f\u6210\u3002\\n`;\n            exportContent += `\u7ed3\u679c\u4ec5\u4f9b\u53c2\u8003\uff0c\u4e0d\u80fd\u66ff\u4ee3\u4e13\u4e1a\u533b\u7597\u8bc4\u4f30\u3002\\n`;\n            exportContent += `\u62a5\u544a\u751f\u6210\u65e5\u671f: ${new Date().toLocaleDateString('zh-CN')}\\n`;\n            \/\/ \u521b\u5efa\u4e0b\u8f7d\u94fe\u63a5\n            const blob = new Blob([exportContent], { type: 'text\/plain;charset=utf-8' });\n            const url = URL.createObjectURL(blob);\n            const a = document.createElement('a');\n            a.href = url;\n            a.download = `\u8df3\u8dc3\u6d4b\u8bd5_${subjectName}_${testDate}.txt`;\n            document.body.appendChild(a);\n            a.click();\n            document.body.removeChild(a);\n            URL.revokeObjectURL(url);\n            \/\/ \u663e\u793a\u6210\u529f\u6d88\u606f\n            alert('\u6d4b\u8bd5\u7ed3\u679c\u5df2\u5bfc\u51fa\u4e3a\u6587\u672c\u6587\u4ef6\uff01');\n        }\n        \/\/ \u586b\u5145\u793a\u4f8b\u6570\u636e\n        function fillSampleData() {\n            \/\/ \u53d7\u8bd5\u8005\u4fe1\u606f\n            document.getElementById('subjectName').value = '\u5f20\u660e';\n            document.getElementById('age').value = '25';\n            document.getElementById('gender').value = 'male';\n            document.getElementById('sportActivity').value = 'basketball';\n            document.getElementById('injurySide').value = 'left';\n            document.getElementById('injuryType').value = 'ACL\u91cd\u5efa\u672f\u540e6\u4e2a\u6708';\n            \/\/ \u5355\u817f\u8df3\u6d4b\u8bd5\u6570\u636e\n            document.getElementById('slhRight1').value = '185.5';\n            document.getElementById('slhRight2').value = '187.0';\n            document.getElementById('slhRight3').value = '186.0';\n            document.getElementById('slhLeft1').value = '165.5';\n            document.getElementById('slhLeft2').value = '167.0';\n            document.getElementById('slhLeft3').value = '166.5';\n            \/\/ \u4ea4\u53c9\u8df3\u6d4b\u8bd5\u6570\u636e\n            document.getElementById('cohRight1').value = '520.0';\n            document.getElementById('cohRight2').value = '525.5';\n            document.getElementById('cohRight3').value = '523.0';\n            document.getElementById('cohLeft1').value = '480.0';\n            document.getElementById('cohLeft2').value = '485.5';\n            document.getElementById('cohLeft3').value = '483.0';\n            \/\/ \u4e09\u8fde\u8df3\u6d4b\u8bd5\u6570\u636e\n            document.getElementById('thRight1').value = '580.0';\n            document.getElementById('thRight2').value = '585.5';\n            document.getElementById('thRight3').value = '582.0';\n            document.getElementById('thLeft1').value = '540.0';\n            document.getElementById('thLeft2').value = '545.5';\n            document.getElementById('thLeft3').value = '542.0';\n            \/\/ \u8ba1\u65f6\u8df3\u6d4b\u8bd5\u6570\u636e\n            document.getElementById('timedRight1').value = '2.15';\n            document.getElementById('timedRight2').value = '2.10';\n            document.getElementById('timedRight3').value = '2.12';\n            document.getElementById('timedLeft1').value = '2.40';\n            document.getElementById('timedLeft2').value = '2.35';\n            document.getElementById('timedLeft3').value = '2.38';\n            \/\/ \u663e\u793a\u6210\u529f\u6d88\u606f\n            alert('\u793a\u4f8b\u6570\u636e\u5df2\u586b\u5145\uff01\u73b0\u5728\u53ef\u4ee5\u70b9\u51fb\"\u8ba1\u7b97\u6d4b\u8bd5\u7ed3\u679c\"\u6309\u94ae\u67e5\u770b\u793a\u4f8b\u7ed3\u679c\u3002');\n        }\n        \/\/ \u9875\u9762\u52a0\u8f7d\u65f6\u6267\u884c\n        window.addEventListener('load', function() {\n            \/\/ \u8bbe\u7f6e\u9ed8\u8ba4\u6d4b\u8bd5\u65e5\u671f\n            document.getElementById('testDate').valueAsDate = new Date();\n            \/\/ \u79fb\u52a8\u7aef\u4f18\u5316\uff1a\u8c03\u6574\u8f93\u5165\u6846\u7c7b\u578b\u4ee5\u663e\u793a\u6570\u5b57\u952e\u76d8\n            const numberInputs = document.querySelectorAll('#app input[type=\"number\"]');\n            numberInputs.forEach(input => {\n                input.setAttribute('inputmode', 'decimal');\n            });\n            \/\/ \u6dfb\u52a0\u89e6\u6478\u53cd\u9988\u6548\u679c\n            const buttons = document.querySelectorAll('#app .btn, #app .btn-secondary, #app .btn-reset, #app .btn-success');\n            buttons.forEach(button => {\n                button.addEventListener('touchstart', function() {\n                    this.style.transform = 'scale(0.98)';\n                });\n                button.addEventListener('touchend', function() {\n                    this.style.transform = '';\n                });\n            });\n        });\n    <\/script>\n<\/body>\n<\/html><\/script>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>\u529f\u80fd\u6027\u8df3\u8dc3\u6d4b\u8bd5\u8bc4\u4f30 | \u91cd\u8fd4\u8fd0\u52a8\u51c6\u5907\u5ea6\u6d4b\u8bd5 \u529f\u80fd\u6027\u8df3\u8dc3\u6d4b\u8bd5\u8bc4\u4f30\u7cfb\u7edf \u57fa\u4e8e Phil Plisky \u535a\u58eb\u91cd\u8fd4\u8fd0\u52a8 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":180,"parent":1307,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1901","page","type-page","status-publish","has-post-thumbnail","hentry"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.funpt.cn\/index.php?rest_route=\/wp\/v2\/pages\/1901","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.funpt.cn\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.funpt.cn\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.funpt.cn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.funpt.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1901"}],"version-history":[{"count":14,"href":"https:\/\/www.funpt.cn\/index.php?rest_route=\/wp\/v2\/pages\/1901\/revisions"}],"predecessor-version":[{"id":2166,"href":"https:\/\/www.funpt.cn\/index.php?rest_route=\/wp\/v2\/pages\/1901\/revisions\/2166"}],"up":[{"embeddable":true,"href":"https:\/\/www.funpt.cn\/index.php?rest_route=\/wp\/v2\/pages\/1307"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.funpt.cn\/index.php?rest_route=\/wp\/v2\/media\/180"}],"wp:attachment":[{"href":"https:\/\/www.funpt.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1901"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}