2017-04-17 18 views
0

基礎代謝率は、性別ごとに異なる値を設定する必要があります。私の電卓は、男性または女性のラジオボタンが選択されているかどうかの結果を男性に表示します。JS条件が期待通りに機能しない

BMR = 66.5 +(13.75×体重)+(5.003×高さcm) - (6.755×年齢) BMRの計算BMR = 655.1 +(9.563×体重)+(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

あなたには、「性別」IDを持つ2つの要素があります。ページにはIDが1つだけあります。あなたはいつも最初のものを手に入れようとしています。 –

+0

2つしかないので、値の代わりに '.checked'プロパティを読むことができます。そして 'true'なら' masc'、それ以外は 'fem'です。 –

+0

それ以外の場合は、 '.querySelector'を使ってチェックされたものを取得してください。 'var gender = document.querySelector(" input [name = gender]:checked ")。value' –

答えて

0

id属性の値は、すべての文書上で一意でなければなりません。したがって、あなたのHTMLは無効です。代わりに、getElementsByNameを使用して要素を取得し、要素のそれぞれの値を確認することができます。

let elements = document.getElementsByName('gender'); 
let isMale = elements[0].value === 'masc' || elements[1].value === 'masc'; 
関連する問題