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

BMI计算器切换BMI结果时无法移除已添加active类该如何修复

修复方法

核心问题

现有代码仅会给匹配的BMI区间色块添加active高亮类,没有在每次计算前清空所有历史添加的active类,导致多次计算后多个色块同时高亮。另外原有代码中BMI≥35的区间体重状态文案填写错误,也会一并修正。

修改后的完整JS代码

const hFeet = document.querySelector("#hFeet");
const hInch = document.querySelector("#hInch");
const wKg = document.querySelector("#wKg");
const submit = document.querySelector("#submit");
const result = document.querySelector("#result_area");
const wStatus = document.querySelector("#wst");

submit.addEventListener("click", bmiFunc);

function bmiFunc(event) {
  event.preventDefault();

  const height = hFeet.value * 0.3048 + hInch.value * 0.0254;
  const weight = wKg.value;
  const calculation = weight / Math.pow(height, 2);
  const final = calculation.toFixed(2);
  result.innerHTML = final;

  // 新增:清空所有已有的active高亮类
  document.querySelectorAll('.color .column.active').forEach(item => {
    item.classList.remove('active');
  })

  if (final < 16) {
    wStatus.innerHTML = "Severe Thinness";
    document.querySelector(".thin1").classList.add("active");
  } else if (final >= 16 && final < 17) {
    wStatus.innerHTML = "Moderate Thinness";
    document.querySelector(".thin2").classList.add("active");
  } else if (final >= 17 && final < 18.5) {
    wStatus.innerHTML = "Mild Thinness";
    document.querySelector(".thin3").classList.add("active");
  } else if (final > 18.5 && final <= 25) {
    wStatus.innerHTML = "Normal";
    document.querySelector(".norm1").classList.add("active");
  } else if (final > 25 && final <= 30) {
    wStatus.innerHTML = "Overweight";
    document.querySelector(".ow1").classList.add("active");
  } else if (final > 30 && final <= 35) {
    wStatus.innerHTML = "Obese Class I";
    document.querySelector(".obs1").classList.add("active");
  } else if (final >= 35 && final <= 40) {
    // 修正错误文案
    wStatus.innerHTML = "Obese Class II";
    document.querySelector(".obs2").classList.add("active");
  } else if (final > 40) {
    // 修正错误文案
    wStatus.innerHTML = "Obese Class III";
    document.querySelector(".obs3").classList.add("active");
  }
}

修改说明

  • 新增的清空逻辑会在每次计算BMI前,选中所有色块中带有active类的元素,统一移除高亮类,确保每次只有最新匹配的区间会被高亮
  • 修正了BMI≥35区间的错误体重状态文案,符合标准BMI分类规范

内容的提问来源于stack exchange,提问作者t.i.rony

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 11:57:02