2017-04-17 113 views
0

不同性別的基礎代謝率應該有不同的值。我的計算器顯示男性是否選擇男性或女性單選按鈕的結果。JS條件不能按預期工作

男性BMR計算BMR = 66.5 +(13.75×體重kg)+(5.003×身高cm) - (6.755×年齡) BMR計算女性BMR = 655.1 +(9.563×體重kg )+(1.850×高釐米) - (4.676×年齡在年)

<!DOCTYPE html> 
 

 
<html> 
 

 
<head> 
 

 
<script> 
 

 
var bmr; 
 
function funcCalc() { 
 
var age = document.getElementById("age").value; 
 
var gender = document.getElementById("gender").value; 
 
var height = document.getElementById("height").value; 
 
var weigth = document.getElementById("weigth").value; 
 

 
if (gender == "masc") { 
 
bmr = 66.5 + (13.75 * weigth) + (5.003 * height) - (6.755 * age) 
 
} else { 
 
bmr = 655.1 + (9.563 * weigth) + (1.850 * height) - (4.676 * age) 
 
} 
 
document.getElementById("lblResult").innerHTML = bmr; 
 
} 
 

 
</script> 
 

 
</head> 
 

 
<body> 
 

 
<form action="#"> 
 
    <input type="radio" name="gender" id="gender" value="masc" checked> Male<br> 
 
    <input type="radio" name="gender" id="gender" value="fem"> Female<br> 
 
    Age:<br> 
 
    <input type="number" id="age" value="20"><br> 
 
    Height:<br> 
 
    <input type="number" id="height" value="180"><br> 
 
    Weight:<br> 
 
    <input type="number" id="weigth" value="80"><br> 
 
</form> 
 

 
<button type="button" 
 
onclick="funcCalc()"> 
 
Result</button> 
 

 
<p id="lblResult">BMR</p> 
 

 
</body> 
 

 
</html>

+2

你有兩個帶有'gender' ID的元素。一個頁面上只能有一個ID。你總是會獲得第一名。 – 2017-04-17 17:19:00

+0

由於只有兩個,你可以閱讀它的'.checked'屬性而不是它的值。那麼如果'真',你知道它是'masc',否則'fem'。 – 2017-04-17 17:19:39

+0

否則,使用'.querySelector'來獲取選中的一個。 'var gender = document.querySelector(「input [name = gender]:checked」).value' – 2017-04-17 17:21:44

回答

0

id屬性的值必須在每一份文件是唯一的。所以你的HTML是無效的。相反,您可以使用getElementsByName來獲取元素並檢查每個元素的值。

let elements = document.getElementsByName('gender'); 
let isMale = elements[0].value === 'masc' || elements[1].value === 'masc';