You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

高血压分级判断JS代码仅正常/升高分级生效,其余分级无结果如何修复

问题原因

  1. 输入值未做类型转换:从input框获取的value默认是字符串类型,直接进行数值比较容易出现不可预期的异常,是导致130139/8089区间无法命中的核心原因
  2. 触发逻辑不全:仅给舒张压输入框绑定了计算事件,修改收缩压数值不会触发分级判断
  3. 边界判断不符合规则:原有代码对≥180收缩压、≥120舒张压的判断用了>运算符,等于边界值时无法命中高血压危象分级
  4. 分级逻辑不符合临床标准:原代码要求收缩压、舒张压同时落在对应区间才会命中分级,实际血压分级取两个指标中更高的等级即可,会导致大量场景无匹配结果

修复方案

1. 修正JS逻辑

将输入值转换为整数,调整分级判断顺序从最高级向最低级匹配,支持单指标超标命中高等级分级:

function bpcal() {
  // 转成整数避免字符串比较异常,默认值设为0做容错
  var diastolic = parseInt(document.admin.bp.value) || 0;
  var systolic = parseInt(document.admin.bpm.value) || 0;
  
  if (diastolic > 0 && systolic > 0) {
    var bpva = (systolic / diastolic).toFixed(2); // 保留两位小数可读性更好
    document.admin.bpval.value = bpva;
    let status = '';
    let bgColor = '';

    // 从最高危等级往最低等级判断,任意一个指标符合就命中对应分级
    if (systolic >= 180 || diastolic >= 120) {
      status = "Hypertensive Crisis!!!!";
      bgColor = "red";
    } else if (systolic >= 140 || diastolic >= 90) {
      status = "Higher BP Stage 2.";
      bgColor = "brown";
    } else if (systolic >= 130 || diastolic >= 80) {
      status = "Higher BP Stage 1.";
      bgColor = "orange";
    } else if (systolic >= 120) {
      status = "Elevated.";
      bgColor = "yellow";
    } else {
      status = "Normal.";
      bgColor = "lightgreen";
    }

    document.admin.bpmeaning.value = status;
    document.admin.bpmeaning.style.backgroundColor = bgColor;
  }
}

2. 修正HTML逻辑

给收缩压输入框也添加计算触发事件,同时把输入框类型改为number限制只能输入数字:

<form role="form" name="admin" method="post">
  <section>
    <div style="float:left;margin-right:2px;">
      <label for="bpm">BP Systolic U-#</label>
      <input type='number' name="bpm" id="bpm" size="10" required="true" onkeyup="bpcal()" />
    </div>
    <div style="float:left;margin-right:2px;">
      <label for="bp">BP Diastolic L-#</label>
      <input type='number' name="bp" id="bp" size="10" required="true" value="" onkeyup="bpcal()" />
    </div>
    <div style="float:left;margin-right:2px;">
      <label for="bpval">BPVal</label>
      <input readonly type='text' size="10" name="bpval" />
    </div>
    <div style="float:left;">
      <label for="bpmeaning">Status</label>
      <input readonly type='text' name='bpmeaning' size="30" />
    </div>
  </section>
</form>

内容的提问来源于stack exchange,提问作者Phillip Chirazo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 17:24:01