2017-03-09 123 views
0

enter image description hereBMI计算器英尺英寸换算错误

上面的图片是我目前工作的一个BMI计算器的屏幕截图。

下面的JavaScript代码应该将英尺标签(ftheight)中提供的值转换为英寸,然后将其添加到提供给英寸标签(inheight)的值中,然后将结果乘以2.54将其转换为厘米(厘米)。

举例来说,BMI结果是错误的,例如,体重是75kg,身高是5英尺9英寸,BMI结果显示0.31而不是24.42,但是当我将英尺的值更改为0或空白并且英寸的值为69 ,它给了正确结果24.42

HTML

<form name="bmiForm"> 
     Your Weight(kg): <br><br> 
     <input type="text" name="weight" size="10"><br /> 

     Your Height: <br><br> 
     Feet: &nbsp; <input type="number" name="ftheight" size="10"> 
     &nbsp; Inches: &nbsp; <input type="number" name="inheight" size="10"><br /> 

     <input type="button" value="Calculate BMI" onClick="calculateBmi()"><br /><br /> 

     Your BMI: <br><input class="bmiresult" name="bmi" size="10"><br /> 

     This Means: <br><input class="bmimean" name="meaning" size="25"><br /> 
     <input type="reset" value="Reset" /> </form> 

JAVASCRIPT

function calculateBmi() { 
var weight = document.bmiForm.weight.value 
var result = 2.54 * (document.bmiForm.ftheight.value * 12 + document.bmiForm.inheight.value) 
var height = result 
if(weight > 0 && height > 0){ 
var finalBmi = weight/(height/100*height/100) 
document.bmiForm.bmi.value = finalBmi 
if(finalBmi < 18.5){ 
document.bmiForm.meaning.value = "Hmm... you are too thin." 
} 
if(finalBmi > 18.5 && finalBmi < 25){ 
document.bmiForm.meaning.value = "Yah! you are healthy." 
} 
if(finalBmi > 25){ 
document.bmiForm.meaning.value = "Oops... you are overweight." 
} 
} 
else{ 
alert("Please Fill in everything correctly") 
} 
} 

我要的是先转换送入英尺箱int值o英寸并将其添加到英寸框中提供的值,并将结果乘以2.54给我的值为var height

回答

2

我将权重输入更改为键入数字(以使其与其他输入保持一致),然后在输入值上调用parseFloat(因为输入值通常默认存储为文本,而不是数字)。

如果您想将值限制为整数,您可以将其更改为parseInt英尺和英寸值。

如果您发现输出为“丑陋”,则可以使用toFixed限制结果中显示的小数位数。

function calculateBmi() { 
 
    var weight = parseFloat(document.bmiForm.weight.value); 
 
    var ftHeight = parseFloat(document.bmiForm.ftheight.value); 
 
    var inHeight = parseFloat(document.bmiForm.inheight.value); 
 
    var height = 2.54 * (ftHeight * 12 + inHeight); 
 
    
 
    if(weight > 0 && height > 0){ 
 
    var finalBmi = weight/(height/100 * height/100) 
 
    document.bmiForm.bmi.value = finalBmi 
 
    if(finalBmi < 18.5){ 
 
     document.bmiForm.meaning.value = "Hmm... you are too thin." 
 
    } else if(finalBmi > 18.5 && finalBmi < 25){ 
 
     document.bmiForm.meaning.value = "Yah! you are healthy." 
 
    } else if(finalBmi > 25){ 
 
     document.bmiForm.meaning.value = "Oops... you are overweight." 
 
    } 
 
    } else{ 
 
     alert("Please Fill in everything correctly") 
 
    } 
 
}
<!DOCTYPE html> 
 
<html> 
 
<head> 
 
    <meta charset="utf-8"> 
 
    <meta name="viewport" content="width=device-width"> 
 
    <title>JS Bin</title> 
 
</head> 
 
<body> 
 
    <form name="bmiForm"> 
 
    Your Weight(kg): <br><br> 
 
    <input type="number" name="weight" size="10"><br /> 
 

 
    Your Height: <br><br> 
 
    Feet: &nbsp; <input type="number" name="ftheight" size="10"> 
 
    &nbsp; Inches: &nbsp; <input type="number" name="inheight" size="10"><br /> 
 

 
    <input type="button" value="Calculate BMI" onClick="calculateBmi()"><br /><br /> 
 

 
    Your BMI: <br><input class="bmiresult" name="bmi" size="10"><br /> 
 

 
    This Means: <br><input class="bmimean" name="meaning" size="25"><br /> 
 
    <input type="reset" value="Reset" /> 
 
    
 
    </form> 
 
</body> 
 
</html>

+0

这适用于我 – Sam