2015-03-25 41 views
0

所以基本上,我正在为健身房会员制作申请表。 基本成本是100美元。如果选择了杂耍,成本将增加50美元。 另外,如果'BMI'> 25且< = 30,则基本成本将增加50美元。如果'BMI'> 30,则其将增加100美元。 这是我的代码。它不按预期工作。想要一些帮助。非常感谢。根据选定的项目和其他值更改输入框的值

<!DOCTYPE html> 
    <html> 
    <head> 
    <title>UWS application form</title> 
    <link rel="stylesheet" href="Prac1Task2.css" /> 
    </head> 
    <body> 
    <form> 
    <fieldset> 
    <legend>Fitness Details</legend> 
Favourite Activities: <br/> 
    <input type="checkbox" name="activity" value="cycling" id="cycling"><label for="cycling">Cycling</label>  
    <input type="checkbox" name="activity" value="50" id="juggling" onchange="update(this);"><label for="juggling">Juggling</label>  
    <br/> 
    <br/> 
    <label for="height">What is your height &#40;Meters&#41;</label><br/> 
    <input type="number" name="height" id="height" class="input" onchange="getBMI()"> 
    <br/> 
    <label for="weight">What is your weight? &#40;kg&#41;</label><br/> 
    <input type="number" name="weight" id="weight" class="input" onchange="getBMI()"> 
    <br/> 
    <label for="bmi">BMI:</label><br/> 
    <input type="number" name="bmi" id="bmi" class="input" value="" readonly> 
    <script> 
     function getBMI() 
     { 
      var height = document.getElementById("height").value; 
      var weight = document.getElementById("weight").value; 
      document.getElementById("bmi").value = (weight/height)/height; 
      var bmi = document.getElementById("bmi"); 
      var price = document.getElementById("price").value; 
      if (bmi.value > 25 && bmi.value <= 30) 
      { 

       parseInt(price.value) += parseInt(50); 
      document.getElementById('price').value = price.value; 
      } 
      else if (bmi.value > 30) 
      { 
       document.getElementById("price").value = document.getElementById("price").value + 100; 

      } 
    } 
    </script> 

    </fieldset> 
    <br/> 
    <fieldset> 
    <legend>Application Details</legend> 
    Date of Application:<br/> 
    <input class="input" id="date" name="date" readonly /> 
    <script> 
    var timetime = new Date(); 
    document.getElementById("date").value = (timetime.getDate() + "/" + (timetime.getMonth() + 1) 
       + "/" + timetime.getFullYear()); 
    </script> 
<br/><br/> 
Cost of Application: <br/> 
$<input type="number" class="input" id="price" name="price" step="0.01" value="100" readonly /> 
    <script> 
    var total = 100; 
    function update(feature) { 

     if(feature.checked == true){ 

      total += parseInt(feature.value); 
     document.getElementById('price').value = total; 
     } 

     if(feature.checked == false){ 

      total -= parseInt(feature.value); 
      document.getElementById('price').value = total; 
      } 
    } 
    </script> 
    </fieldset> 
    <br/> 
    <input type="submit" value="Submit" class="button"> 
    </form> 
    </body> 
    </html> 
+0

除非你的健身房会员只能为高1米或2米,我建议增加一个'步=“0.01”'你的“高度”领域也是如此。当计算BMI时 – Xufox 2015-03-25 09:49:11

回答

0

你还没有提到你正面临的确切问题。但是,我认为这行代码应该有一些问题。

parseInt(price.value) += parseInt(50); 

parseInt()是一个函数,你不能给它赋值。

它应该是这样的

price.value = parseInt(price.value) + parseInt(50); 

而且price.value有些东西不是一个适当的参考,因为你要分配document.getElementById("price").value;它。所以,你应该用价格而不是price.value

+0

。总数将变为10050美元而不是150美元 – 2015-03-25 09:53:46

+0

100 + 50 = 10050 ...如果您没有正确地转换变量的话,会发生这种情况 – Andromeda 2015-03-25 09:55:53

+0

如果您不确定代码内部发生了什么,请在计算的每一步中使用警报,问题出在哪里 – Andromeda 2015-03-25 09:58:39

相关问题