2017-03-09 126 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