有一些Javascript的问题

时间:2016-12-13 01:10:23

标签: javascript html

我正在制作一个应该计算你的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>

1 个答案:

答案 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本身附加函数是非常优选的。

然而,从onSubmitaddEventListener事件的更改绝对不会对您进行更正:我只是使用submit因为{{1} }不能在Stack Overflow可执行片段中使用;在您的代码中,您可能应该继续将click附加到表单,而不是click附加到您的提交按钮。

submit
submit