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

IMC计算器Switch语句异常:始终显示默认提示信息求助

问题分析

你的IMC计算器始终显示默认提示,核心有两个问题:

  1. switch语句用法错误:当前以计算出的bmi值作为switch判断目标,但case里写的是布尔表达式(比如bmi < 18.5),JavaScript会拿bmi的值和布尔值true/false做严格相等(===)比较,几乎不可能匹配任何case,直接进入default分支。
  2. 数据类型不匹配:toFixed(2)会把数值转换成字符串,后续用字符串和数值做大小比较,逻辑会出现错误。
修复方案
  • 保留bmi的数值类型,直到最后渲染时再处理格式转换。
  • 将switch的判断目标改为true,让每个case的布尔表达式直接求值匹配对应分支。
  • 对输入的体重和身高做数值转换,避免非数字输入导致计算异常。
修正后的代码
const form = document.querySelector('#form');

form.addEventListener('submit', (e) => {
    e.preventDefault();

    // 转换输入为数值类型
    const weight = parseFloat(document.querySelector('#weight').value);
    const height = parseFloat(document.querySelector('#height').value);

    // 保留数值类型计算,不提前转字符串
    const bmi = weight / (height ** 2);

    const value = document.querySelector('#value');
    let description = '';

    document.querySelector('#infos').classList.remove('hiden');

    // 以true为判断目标,让case表达式直接求值匹配
    switch(true){
        case bmi < 18.5:
            description = 'Cuidado! Você está abaixo do peso!';
            break;
        case bmi >= 18.5 && bmi <= 25:
            description = "Você está no peso ideal!";
            value.classList.remove('attention');
            value.classList.add('normal');
            break;
        case bmi > 25 && bmi <= 30:
            description = "Cuidado! Você está com sobrepeso!";
            break;
        case bmi > 30 && bmi <= 35:
            description = "Cuidado! Você está com obesidade moderada!";
            break;
        case bmi > 35 && bmi <= 40:
            description = "Cuidado! Você está com obesidade severa!";
            break;
        case bmi > 40:
            description = "Cuidado! Você está com obesidade morbida!";
            break;
        default:
            description = "verifique novamente";
            break;
    }
    // 渲染时再处理格式,转成带两位小数的字符串并替换小数点
    value.textContent = bmi.toFixed(2).replace('.', ',');
    document.querySelector('#description').textContent = description;
});

内容的提问来源于stack exchange,提问作者Milla Dma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 12:45:12