我正在制作一个应该计算你的Bmi的程序,但无论我输入什么,它仍然说BMI仍然非常肥胖。如果有人能帮助我找出问题,我将非常感激。这是我的代码:
function CalculateBMI() {
var ft,
bmi,
heighti_e,
heightf_e,
weight_e,
bmi_e,
bmi;
heighti_e = document.getElementById("heighti");
heightf_e = document.getElementById("heightf");
weight_e = document.getElementById("weight");
bmi_e = document.getElementById("bmi");
bmi = (weight_e * 0.45) / (((12 * heightf_e) + heighti_e) * 0.025) ^ 2;
if (bmi <= 19) {
bmi = "Underweight";
} else if (bmi > 19 && bmi <= 25) {
bmi = "Desirable";
} else if (bmi > 25 && bmi <= 29) {
bmi = "Prone to health risks";
} else if (bmi > 29 && bmi <= 40) {
bmi = "obese";
} else (bmi > 40) {
bmi = "Extremely Obese";
}
bmi_e.value = bmi;
return false;
}
<form action="" name="bmi" onsubmit="return CalculateBMI()">
<p>Weight:
<p/>
</td>
<td>
<input type="text" id="weight" name="weight" size="25" />
<p>Height:</p>
<input type="text" id="heightf" name="textbox" size="25" />
<td>
<p>Ft.</p>
<input type="text" id="heighti" name="textbox" size="25" />
<p>In.</p>
<input type="submit" id="Calculate BMI" name="Calculate BMI" value="Calculate BMI" size="25" />According to the Panel on Energy, Obesity, and Body Weigth Standards published by American Journal of Clinical Nurttrition, your category is:
<input type="text" id="bmi" name="textbox" size="25" />
</form>
答案 0 :(得分:0)
有几个错误。首先,您从HTML中获取元素,并尝试使用它们进行计算;但他们不是数字。它们包含 代表数字的一些文本。首先,我们需要使用1 0 -132.644 0
2 0 -80 0
3 0 -40 0
4 0 0 0
5 0 40 0
6 0 80 0
7 0 132.644 0
属性从input
元素中获取文本,然后我们需要将该字符串值转换为数字,以便我们可以使用.value
(或{ {1}}如果你认为你不想要输入的小数值。
第二个错误是条件结构中的语法错误:在parseFloat
之后,您无法设置条件。如果你想要一个条件,那么你必须像在其他地方一样做,并放置parseInt
,我已经在下面这样做了。更好的方法是意识到在这一点上不满足该条件的情况下,并且只使用else
(没有条件)。
第三,我将您的else if (condition) { ...
更改为else { ...
,JavaScript的取幂函数。 ^
有一个非常不同的含义:按位异或。
另请注意,我已将您的提交处理程序更改为单击处理程序,并以不同方式附加它。第二点是风格:现代JavaScript风格指南严重阻碍了JavaScript和HTML的混合,因此,诸如Math.pow
之类的HTML属性中的JavaScript不受欢迎。使用^
(或者如果使用jQuery这样的DOM操作库的等效函数)从JavaScript本身附加函数是非常优选的。
然而,从onSubmit
到addEventListener
事件的更改绝对不会对您进行更正:我只是使用submit
因为{{1} }不能在Stack Overflow可执行片段中使用;在您的代码中,您可能应该继续将click
附加到表单,而不是click
附加到您的提交按钮。
submit
submit