BMI计算器以Javascript显示结果
BMI Calculator displaying result in Javascript
所以我正在编写一个BMI计算器,显示用户的BMI效果很好,但我很难用javascript来显示结果的含义。在用户输入他们的身高和体重并按下评估BMI按钮后,他们的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();">
当您调用document.getElementById("result").value = conclusion;
时,conclusion
仍然未定义。您必须在开关语句之后设置该值。
请注意,开关块末尾缺少一个闭合括号,这可能会干扰代码。最终应该是这样的:
switch (calcBMI) {
// cases
}
document.getElementById("result").value = conclusion;
如果创建一个单独的函数,接受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)
语句。
使用此代码;我已经固定好了孔,还把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;
}
相关文章:
- 当查询不在displayField中时,引导Ajax Typeahead不显示结果
- JavaScript循环无法正确计算/显示结果
- 将循环中的两个文本框相乘,并在第三个文本框上显示结果
- BMI计算器以Javascript显示结果
- 在表中显示结果
- onchange选择get value并执行查询,然后在同一页面上显示结果
- 搜索XML文件并使用javascript显示结果
- Moment.js不显示结果
- 使用jQuery延迟表单输入,并在延迟后在同一页面上显示结果
- 防止 PHP 在新页面中显示结果
- jquery jqgrid 不显示结果,具体取决于 JSON 对象中的参数
- Angular-如何显示结果,仅在未选中时显示
- backbone.js视图没有't由于异步获取而显示结果;t渲染
- jqueryajax帖子将我发送到操作页面,并且不会显示结果数据
- 添加两个数字,并使用Javascript在文本框中显示结果
- 接受用户输入,与JSON数据匹配,并以javascript显示结果
- 自动完成 JQuery 不显示结果
- 控制台.log或显示结果的函数
- 提交表单,使用脚本处理信息,并在同一页面上显示结果
- AJAX 实时搜索仅当结果以相同的第一个字母开头时才显示结果