2015-11-09 146 views
0

我目前正試圖開發一個簡單的移動應用程序,計算你的BMI,BMR等條件語句忽略

有兩個不同的公式來計算男性和女性的BMR。

對於男性:66+(13.7 *重量)+(5×高度×100) - (6.8×年齡)

對於女性:655+(9.6 *重量)+(1.8×高度×100) - (4.7 *年齡)

問題: 我利用了,如果else語句,因此如果用戶在formpage點擊「男性」單選按鈕,應用程序會識別出用戶是男性,並使用男性BMR公式來計算他的BMR。男性BMR的計算進行得很順利,結果顯示在calculateinput.html頁面

E.g.如果體重= 100,身高= 2,年齡= 18,性別=男性,我會得到2313.6,因爲BMR是正確的。

但是,如果我點擊「女性」單選按鈕,該應用程序仍然使用男性BMR公式,而不是女性BMR公式來計算她的BMR。 如果體重= 100,身高= 2,年齡= 18,性別=女性,我仍然會得到2313.6這是不正確的。

好像我的代碼忽略了用戶的性別輸入和應用男性BMR公式不分性別在表單頁面收音,儘管我的if else語句...

有人能識別並指出什麼錯我做了嗎? 您的解釋是讚賞!

下面是我在common.js

function bmr(gender, height, weight, age){ 
 
var calculatedbmr; 
 
if (gender="male"){ 
 
calculatedbmr=66+(13.7 * weight)+(5 * height * 100)-(6.8 * age); 
 
} \t 
 
else if(gender="female"){ 
 
calculatedbmr=655+(9.6 * weight)+(1.8 * height * 100)-(4.7 * age); \t 
 
} 
 
return calculatedbmr; 
 
}

下面是我的顯示結果頁面代碼的代碼。(名爲calculateinput.html)

<!DOCTYPE html> 
 
<html> 
 
       <head> 
 
         <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *"> 
 
         <meta name="format-detection" content="telephone=no"> 
 
         <meta name="msapplication-tap-highlight" content="no"> 
 
         <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width"> 
 
         <link rel="stylesheet" type="text/css" href="css/index.css"> 
 
         <link rel="stylesheet" href="js/jquery.mobile-1.4.5.min.css"> 
 
         <script src="js/jquery-1.11.3.min.js"></script> 
 
         <script src="js/jquery.mobile-1.4.5.min.js"></script> 
 
         <script src="common.js"></script> 
 
     
 
         <script type="text/javascript"> 
 
         var mybmi = localStorage.getItem("bmi");   
 
         
 
         var weightcategory; 
 
         if (mybmi<18.5){ 
 
        \t weightcategory = "Underweight"; 
 
         } 
 
         else if ((mybmi>=18.5)&&(mybmi<=24.99)){ 
 
        \t weightcategory = "Normal Weight"; 
 
         } 
 
         else if ((mybmi>=25)&&(mybmi<=29.99)){ 
 
        \t weightcategory = "Overweight"; 
 
         } 
 
         else if ((mybmi>=30)&&(mybmi<=34.99)){ 
 
        \t weightcategory = "Class 1 Obesity"; 
 
         } 
 
         else if ((mybmi>=35)&&(mybmi<=39.99)){ 
 
        \t weightcategory = "CLass 2 Obesity"; 
 
         } 
 
         else if (mybmi>=40){ 
 
        \t weightcategory = "Morbidly Obese"; 
 
         } 
 
         
 
         var theloseorgainmessagethatappears = localStorage.getItem("loseorgain"); 
 
         
 
         var theweightdifference = localStorage.getItem("weightdifference"); 
 
         
 
          
 
         var thebmrrate = localStorage.getItem("bmrrate"); 
 
         
 
         
 
         
 
         </script>  
 
       </head> 
 
       
 
       
 
       <body> 
 
        <div data-role="page" id="mainpage"> 
 
        
 
\t \t \t   <div data-role="header"> 
 
\t \t \t \t  <a href="#" onclick="home()" class="ui-btn ui-icon-home ui-btn-icon-left">Home</a> 
 
\t \t \t \t  <h1>BMI Calculator</h1> 
 
\t \t \t   </div> \t 
 
\t \t \t 
 
\t \t \t   <div data-role="main" class="ui-content"> 
 
\t \t \t   <b>Your Results:</b><br><br> 
 
\t \t \t   Your weight category: <script>document.write(weightcategory)</script><br><br> 
 
\t \t \t   Your BMI is : <script>document.write(mybmi)</script><br><br> 
 
\t \t \t   <script>document.write(theloseorgainmessagethatappears)</script><br><br> 
 
\t \t \t   Your BMR is : <script>document.write(thebmrrate)</script> <br><br> 
 
\t \t \t   
 
\t \t \t   Weight Difference: <script>document.write(theweightdifference)</script> 
 
\t \t \t   
 
\t \t \t   </div> \t 
 
\t \t \t 
 
\t \t \t   <div data-role="footer" style="text-align:center;"> 
 
\t \t \t   Developed by The Dom   
 
        </div> 
 
        
 
\t    \t </div> 
 
    
 

 
        <script type="text/javascript" src="cordova.js"></script> 
 
        <script type="text/javascript" src="js/index.js"></script> 
 
       </body> 
 
</html>

下面是用戶輸入其輸入的表單頁面上的代碼。

<!DOCTYPE html> 
 
<html> 
 
     <head> 
 
       <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *"> 
 
       <meta name="format-detection" content="telephone=no"> 
 
       <meta name="msapplication-tap-highlight" content="no"> 
 
       <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width"> 
 
       <link rel="stylesheet" type="text/css" href="css/projectindex.css"> 
 
       <link rel="stylesheet" href="js/jquery.mobile-1.4.5.min.css"> 
 
       <script src="js/jquery-1.11.3.min.js"></script> 
 
       <script src="js/jquery.mobile-1.4.5.min.js"></script> 
 
       <script src="common.js"></script> 
 
       <script type="text/javascript"> 
 
       function calculate(){ 
 
       var bmi = bodymassindex(document.bmiform.height.value, document.bmiform.weight.value); 
 
       localStorage.setItem("bmi",bmi); 
 
       
 
       var loseorgain = loseorgainmessage(document.bmiform.weight.value, document.bmiform.dreamweight.value); 
 
       localStorage.setItem("loseorgain",loseorgain); 
 
       
 
       var weightdifference = myweightdifference(document.bmiform.weight.value, document.bmiform.dreamweight.value); 
 
       localStorage.setItem("weightdifference",weightdifference); 
 
       
 
       var bmrrate = bmr(document.bmiform.gender.value, document.bmiform.height.value, document.bmiform.weight.value, document.bmiform.age.value); 
 
       localStorage.setItem("bmrrate",bmrrate); 
 
           
 
       document.bmiform.submit(); 
 
       }   \t \t 
 
       </script> 
 
     </head> 
 
    
 
    
 
    
 
    
 
     <body>  
 
       <div data-role="page" id="bmicalculator"> 
 
    
 
       <div data-role="header"> 
 
       <a href="#" onclick="home()" class="ui-btn ui-icon-home ui-btn-icon-left">Home</a> 
 
       <h1>BMI Calculator</h1>    
 
       </div>   
 
     
 
       <div data-role="main" class="ui-content">  
 
       Enter your height and weight. The system will calculate your BMI:<br><br> 
 
       <form id="bmiform" name="bmiform" action="calculateinput.html"> 
 
     
 
       <label for="height">Height</label> 
 
       <input type="text" name="height" id="height" value="enter height in meters"> 
 
     
 
       <label for="weight">Weight</label> 
 
       <input type="text" name="weight" id="weight" value="enter weight in KG"> 
 
     
 
       <fieldset data-role="controlgroup" data-type="horizontal"> 
 
     
 
       <legend>Gender</legend> 
 
       <label for="male">Male</label> 
 
       <input type="radio" name="gender" id="male" value="male" checked> 
 

 
       <label for="female">Female</label> 
 
       <input type="radio" name="gender" id="female" value="female"> 
 
     
 
       </fieldset> 
 
     
 
       <label for="dreamweight">Dream Weight</label> 
 
       <input type="text" name="dreamweight" id="dreamweight" value="enter dream weight in KG"> 
 
     
 
       <label for="age">Age</label> 
 
       <input type="text" name="age" id="age" value="enter age"> 
 
     
 
       <label for="exercisefrequency">Exercise Frequency</label> 
 
       <select name="exercisefrequency" id="exercisefrequency"> 
 
       <option value="hardlyexercise">Hardly Exercise</option> 
 
       <option value="exercise1to3timesaweek">Exercise 1 to 3 times a week</option> 
 
       <option value="exercise3to5timesaweek">Exercise 3 to 5 times a week</option> 
 
       <option value="exercise6to7timesaweek">Exercise 6 to 7 times a week</option> 
 
       <option value="intensiveexercisemorethan7timesaweek">Intensive Exercise more than 7 times a week</option> 
 
       </select><br> 
 
     
 
       <input type="button" value="Calculate" onclick="calculate()"> 
 
     
 
       </form> 
 
     
 
       </div> 
 
    
 
     
 
       <div data-role="footer" style="text-align:center;">  
 
       Developed by The Dom  
 
       </div>  
 
           
 
       <script type="text/javascript" src="cordova.js"></script> 
 
       <script type="text/javascript" src="js/index.js"></script> 
 
      
 
       </div> 
 
     </body> 
 
</html>

+0

=是賦值,==是比較,===是嚴格比較 –

+0

如果你在內部條件中有錯誤的放置'='和'==',你也可以使用* yoda條件*表示'「男性= = gender'(相反的條件..而不是'gender ==「male」'),如果您嘗試使用單個'=',則會產生錯誤。但我強烈建議你檢查一下,並學習使其始終成爲例行公事的一部分。幫助:總是認爲是否值得使用'=='或'==='。 tripple意味着嚴格,並且還會檢查像if(false ==='false')'這樣會忽略內部塊的實例,因爲第二個是字符串而不是布爾值。 –

+0

而不是yoda條件,我會建議使用適當的IDE,將在if語句中的任務中拋出錯誤。 – Cerbrus

回答

5

您使用的分配,而不是在你的if陳述平等檢查。

替換:

if (gender="male"){ 
else if(gender="female"){ 

有了:

if (gender==="male"){ 
else if(gender==="female"){ 
+0

我用===和==取代了=。這兩個更改給了我一個未定義的變量錯誤。無論如何,我曾經做過一些PHP,我想這就是爲什麼我習慣於使用單個=而不是==和===或比較。嚴重的錯誤! – Dominic

+0

什麼是錯誤_exactly_? – Cerbrus

+0

「您的BMR是:undefined」出現在calculateinput.html – Dominic

0

使用 '==' 的比較,而不是這個 '='。 '='用於將thr rhs變量分配給lhs變量和'=='進行比較。

+0

您應該使用''==='''而不是''=='''。看到這裏:http://stackoverflow.com/a/359509/1916362 –