所以我正在编写一个BMI计算器,并且显示用户的BMI运行良好,但是我很难获得javascript来显示其结果的含义。在用户输入他们的身高和体重并按 assessmentBMI 按钮后,会出现他们的数字BMI值,但是如何包含确定他们属于哪个范围的结论变量?其他一切都很好,除了将结果与数字输出联系起来。谢谢。
<script type="text/javascript"> function assessBMI() {
var heightInInches = document.getElementById("height").value;
var weightInPounds = document.getElementById("weight").value;
var calcBMI = Math.floor((weightInPounds * 703) / (heightInInches * heightInInches));
var conclusion;
document.getElementById("BMI").value = calcBMI;
document.getElementById("result").value = conclusion;
switch (calcBMI) {
case (calcBMI < 18.5) :
conclusion = 'You are underweight';
break;
case (calcBMI > 18.5) && (calcBMI < 24.9) :
conclusion = 'You fall within the average range';
break;
case (calcBMI >= 25) && (calcBMI < 29.9) :
conclusion = 'You are overweight';
break;
case (calcBMI > 30) :
conclusion = 'You are obese';
break;
<input type="button" value="assessBMI" onclick="assessBMI();">
答案 0 :(得分:1)
当您致电document.getElementById("result").value = conclusion;
时,conclusion
仍未定义。您必须在开关语句
请注意,您在交换机块的末尾缺少一个结束括号,这可能会弄乱您的代码。应该最终看起来像这样:
switch (calcBMI) {
// cases
}
document.getElementById("result").value = conclusion;
答案 1 :(得分:1)
如果您创建了一个单独的函数,它可以改进组织,该函数接受BMI
输入并返回“结论”。所以assessBMI()
可能最终会像这样:
function assessBMI() {
var heightInInches = document.getElementById("height").value;
var weightInPounds = document.getElementById("weight").value;
var calcBMI = Math.floor((weightInPounds * 703) / (heightInInches * heightInInches));
document.getElementById("BMI").value = calcBMI;
document.getElementById("result").value = bmiConclusion(calcBMI);
}
然后你可以专注于搞清楚BMI范围。可能最简单的方法只是一系列if...else
语句:
function bmiConclusion(bmi){
if(bmi <= 18.5)
return 'You are underweight';
else if(bmi > 18.5 && bmi <= 24.9 )
return 'You fall within the average range';
else if(bmi > 24.9 && bmi <= 30)
return 'You are overweight';
else if(bmi > 30)
return 'You are obese';
else
return '';
}
您可以使用switch
语句,但我认为这不会使代码更具可读性或可管理性:
function bmiConclusion(bmi){
switch (true) {
case (bmi <= 18.5) :
return 'You are underweight';
case (bmi > 18.5) && (bmi <= 24.9 ) :
return 'You fall within the average range';
case (bmi > 24.9 ) && (bmi <= 30) :
return 'You are overweight';
case (bmi > 30) :
return 'You are obese';
default:
return '';
}
}
它实际上使代码更长,加上你最终得到奇怪的switch (true)
语句。
答案 2 :(得分:0)
使用此代码;我修好了这些洞,并将document.getElementById("result").value = conclusion;
移到了最后。我希望这就是你所需要的。
function assessBMI() {
var heightInInches = document.getElementById("height").value;
var weightInPounds = document.getElementById("weight").value;
var calcBMI = Math.floor((weightInPounds * 703) / (heightInInches * heightInInches));
var conclusion;
document.getElementById("BMI").value = calcBMI;
switch (calcBMI) {
case (calcBMI < 18.5) :
conclusion = 'You are underweight';
break;
case (calcBMI >= 18.5) && (calcBMI < 25) :
conclusion = 'You fall within the average range';
break;
case (calcBMI >= 25) && (calcBMI < 30) :
conclusion = 'You are overweight';
break;
case (calcBMI >= 30) :
conclusion = 'You are obese';
break;
}
document.getElementById("result").value = conclusion;
}