2013-05-16 74 views
-1

我一直在这工作了几个小时,我不能,为我的数字生活如何做到这一点。在JavaScript中使用单选按钮进行计算

所以,我想在java脚本(在HTML背面)进行计算。我想知道如何让单选按钮获得一些增值服务的价值。 EG(女性单选按钮勾选,var a = 10,var x = 20等,但如果选中男性单选按钮,var a = 34,var x = 32等...)

也与此我想知道,如果我可以做一个长期的例子(bmr = a +(x * weight)+(y * height) - (z * age))。然后,最后在不同的文本字段中显示所有这些信息。

HTML

<!DOCTYPE html PUBLIC> 
<html> 

    <head> 
     <meta http-equiv="Content-Type" content="text/html;   charset=utf-8" /> 
     <title>Untitled Document</title> 
     <SCRIPT type="text/javascript" src="jstest.js"> 

     </SCRIPT> 
    </head> 

    <body> 
     <form action="" method="post" name="caloriecalc"> 
      <table> 
       <tr> 
        <td>Age:</td> 
        <td> 
         <input type="text" name="age" size="5" /> 
        </td> 
       </tr> 
       <tr> 
        <td>Gender:</td> 
        <td> 
         <label> 
          <input type="radio" name="gender" value="male" />Male</label> 
         <br /> 
         <label> 
          <input type="radio" name="gender" value="female" />Female</label> 
         <br /> 
        </td> 
       </tr> 
       <tr> 
        <td>Weight:</td> 
        <td> 
         <input type="text" name="weight" size="7" />KG</td> 
       </tr> 
       <tr> 
        <td>Height:</td> 
        <td> 
         <input type="text" name="height" size="7" />CM</td> 
       </tr> 
       <tr> 
        <td> 
         <label>Exercise Level:</label> 
        </td> 
        <td> 
         <select name="activity"> 
          <option value="1.2">Sedentary (little or no exercise)</option> 
          <option value="1.375">Lightly active (exercise/sports 1-3 days/wk</option> 
          <option value="1.55">Mod. active (exercise/sports 3-5 days/wk)</option> 
          <option value="1.725">Very active (exercise/sports 6-7 days/wk)</option> 
          <option value="1.9">Extr. Active (daily exercise/sports & physical job))</option> 
         </select> 
        </td> 
       </tr> 
       <tr> 
        <td></td> 
        <td> 
         <input name="calc" type="button" value="Calculate" onclick="validate()" /> 
        </td> 
       </tr> 
       <tr> 
      </table> 
     </form> 
     <table width="100%"> 
      <tr> 
       <td width="50%" align="right">BMR</td> 
       <td width="50%" id="bmr"></td> 
      </tr> 
     </table> 
    </body> 

</html> 

JAVASCRIPT

function validate() { 
    var age = document.caloriecalc.age.value; 
    var weight = document.caloriecalc.weight.value; 
    var height = document.caloriecalc.height.value; 

    if (age <= 0 || parseInt(age) != age) { 
     alert("Please enter a valid age."); 
    } else if (weight <= 0 || isNaN(Number(weight))) { 
     alert("Please enter a valid weight."); 
    } else if (height <= 0 || isNaN(Number(height))) { 
     alert("Please enter a valid height."); 

    } else { //all the data has been validated 
     calculate(parseInt(age), parseFloat(weight), parseFloat(height)); 
    } 
} 

function calculate(age, weight, height) { 

} 
+0

如果你一直在这个问题上挣扎了好几个小时,想想没有代码或例子,只是一个模糊的描述是多么困难。 – adeneo

+1

显示您的代码。 –

+0

学习一些基本的html/js编码。 – mshsayem

回答

1

试着这么做

function validate() { 
    var i , gender; 
    var age = document.caloriecalc.age.value; 
    var weight = document.caloriecalc.weight.value; 
    var height = document.caloriecalc.height.value; 

    for(i = 0; i < document.caloriecalc.gender.length; i++){ 
     if(document.caloriecalc.gender[i].checked){ 
      gender = document.caloriecalc.gender[i].value; 
     } 
    } 

    if (age <= 0 || parseInt(age) != age) { 
     alert("Please enter a valid age."); 
    } else if (!gender) { 
     alert("Please enter a valid gender."); 
    } else if (weight <= 0 || isNaN(Number(weight))) { 
     alert("Please enter a valid weight."); 
    } else if (height <= 0 || isNaN(Number(height))) { 
     alert("Please enter a valid height."); 
    } else { //all the data has been validated 
     calculate(parseInt(age), parseFloat(weight), parseFloat(height), gender); 
    } 
} 

function calculate(age, weight, height, gender) { 
    var a, x, y = 1, z = 1; 
    switch(gender){ 
     case "male": 
      a= 34; 
      x =32; 
      break; 
     case "female": 
      a= 10; 
      x =20; 
      break; 
    } 

    var bmr = a + (x * weight) + (y * height) - (z * age); 
    document.getElementById('bmr').innerHTML = bmr; 
} 

演示:Fiddle

注:我不知道yz的价值,你还没有使用提及他们

+0

是的,谢谢,帮助:) – MuscleMaths

+0

1+使用开关case.Thanks –

0

你可以得到单选按钮的值: -

var lengthh=document.caloriecalc.gender.length; 
for(var i=0;i<lengthh;i++){ 
     if(document.caloriecalc.gender[i].checked){ 
      gender = document.caloriecalc.gender[i].value; 
     } 
    } 

现在值传递计算功能和你计算如下: -

function calculate(age, weight, height, gender) { 
    var a=0, x=0, y = 1, z = 1; 
    if(gender=='male'){   
      a= 34; 
      x =32; 
      }else{ 
      a= 10; 
      x =20;    
      } 

    //Now the result is 
    var resultt = a + (x * weight) + (y * height) - (z * age); 
    document.getElementById('bmr').innerHTML = resultt; 

} 

希望它会帮助你。

+0

怀疑他不知道如何得到按钮的性别.... – Paul

+0

啊,是的。现在开始工作,谢谢你。 – MuscleMaths