2017-08-08 57 views
2

你好StackOverflow的人,我在尝试这个问题之前确保通过网站彻底准备好,也鼓起足够的勇气寻求帮助(我喜欢解决我自己的问题,但在这种情况下,我来到了一个难关)。jQuery加载(),加载不正确。我怎样才能解决这个问题?

所以我需要的“帮助”是批评和指导,我不认为我有足够的知识来找到问题。到目前为止,我正在尝试一个从用户接收数据并输出结果的网站,我完成了这个工作,但是当我按下提交时出现问题,它刷新了我不想要的页面。我得出了使用按钮并键入'按钮'以防止它令人耳目一新的结论,太棒了!现在用户可以输入他/她的信息,它会完美地吐出结果。现在,这是问题出现的地方(尽管结果是正确的),但我希望我的网站允许用户选择不同的选项(如果他/她决定的话),所以当我从下拉菜单中选择另一个选项时按下并按下提交,它什么都不做。

这导致我研究这个问题,它导致我有几种可能性,jQuery .load()不会因为本地和web服务器问题而加载?我想把它放在那里,我不使用数据库,这只是一个简单的网站,根据用户的信息吐出结果(我会提供底部的代码片段)。此外,在控制台中我得到这个消息:

BMI_ws.html?age=&weight=&height=:44 Uncaught TypeError: BMR is not a function 
at display_gains (bmi_backend.js:27) 
at HTMLButtonElement.onclick (BMI_ws.html?age=&weight=&height=:44) 

,我发现研发的另一件事是XML的提的是,和AJAX,可以帮助我解决这个问题,但我只是想这成为一个没有数据库的简单网站,如果我可以使用jQuery来正确操纵它,我会很高兴。

HTML代码:

<!DOCTYPE HTML> 
<html> 
    <head> 
     <title> Simon's BMi Tool</title> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
     <script src = 'jQuery_methods.js'></script> 
     <link rel = 'stylesheet' href = 'style.css'/> 
     <script src = 'bmi_backend.js'></script> 
    </head> 

    <body> 
     <div id = 'container'> 
      <div id = 'header'> 
       <h1>Simon's BMi Tool</h1> 
     </div> 

     <div id = 'introduction' > 
      <div id='context'> 
       <h2> Instructions: <h2> 
       <p> To properly use this to its best potential, you should accurately put in your information so that it can provide you an accurate daily caloric intake. </p> 
      </div> 
     </div> 

     <div id = 'content'> 

      <div id = 'input'> 
       <h2> Caloric Calculator <h2> 

       <form name = 'Values' > 
        <input id = 'm' type ='radio' name = 'gender' value = 'Male'> Male <br> 
        <input id = 'f' type ='radio' name = 'gender' value = 'Female'> Female <br> 
        <br> Age: <br> <input id = 'a' type ='number' name = 'age' min = '10' max = '90' placeholder ='Age #'> <br> 
        <br> Weight(lbs) <br> <input id = 'w' type ='number' name ='weight' min = '70' max = '250' placeholder ='Weight #'> <br> 
        <br> Height(inches) <br> <input id = 'h' type ='number' name ='height' min ='36' max = '84' placeholder ='Height #'> <br> 
        <br> Activity Level: <br> <select id = 'activity'> 
         <option value ='0'>Basic Metabolic Rate</option> 
         <option value ='1'>Desk Job</option> 
         <option value ='2'>Lightly Active</option> 
         <option value ='3'>Moderately Active</option> 
         <option value ='4'>Active</option> 
         <option value ='5'>Extremely Active</option> 
         </select> 

         <button type = 'button' onclick ="display_gains()"> submit </button> 
       </form> 

      </div> 

      <div id= 'placeholder'> 
       <p>Maintenence: </p><p id = 'maint_daily'>0</p> 
       <p>Lose .5 per week: </p> <p id = 'lose_half'>0</p> 
       <p>Lose 1 per week: </p> <p id = 'lose_one'>0</p> 
       <p>Gain .5 per week: </p> <p id = 'gain_half'>0</p> 
       <p>Gain 1 per week: </p><p id ='gain_one'>0</p> 
      </div> 

     </div> 

     <div id = 'footer'> 
      Copyright &copy; 2017 Simon Liu 
     </div> 

     </div> 
    </body> 


</html> 

的JavaScript:

var age; 
var height; 
var weight; 
var activity; 
var BMR; 
var selection; 

function BMR() 
{ 
    if(document.getElementById('m').checked) 
    { 
     age = document.getElementById('a').value; 
     height = document.getElementById('h').value; 
     weight = document.getElementById('w').value; 
     BMR = male_bmr(age, height, weight); 
    } else 
    { 
     age = document.getElementById('a').value; 
     height = document.getElementById('h').value; 
     weight = document.getElementById('w').value; 
     BMR = female_bmr(age, height, weight); 
    } 
    return BMR; 
} 

function display_gains(){ 
    var value = BMR(); 
    var option = document.getElementById('activity'); 
    var text = option.options[option.selectedIndex].text; 

    if (text === 'Basic Metabolic Rate') 
    { 
     return document.getElementById('maint_daily').innerHTML = value.toFixed(0); 
    } 
    else if (text === 'Desk Job') 
    { 
     document.getElementById('maint_daily').innerHTML = (value*1.2).toFixed(0); 
     document.getElementById('lose_half').innerHTML = (one(value) - 250).toFixed(0); 
     document.getElementById('lose_one').innerHTML = (one(value) - 500).toFixed(0); 
     document.getElementById('gain_half').innerHTML = (one(value) + 250).toFixed(0); 
     document.getElementById('gain_one').innerHTML = (one(value) + 500).toFixed(0); 
    } 
} 


function male_bmr(a, h, w){ 
    return(66.47 + (13.75 * (kg(w))) + (5 * (cm(h))) - (6.75 * a)); 
} 

function female_bmr(a, h, w){ 
    var fbmr = 665.09 + (9.56 * (kg(w))) + (1.84 * (cm(h))) - (4.67 * a); 
    return fbmr; 
} 

function kg(lbs){ 
    var ans = (lbs * .453592); 
    return ans; 
} 

function cm(inches) 
{ 
    var ans = (inches) * (2.54); 
    return ans; 
} 

function one(val) 
{ 
    var sample = val; 
    return sample*1.2; 
} 

function two(val) 
{ 
    return val*1.375; 
} 

function three(val) 
{ 
    return val*1.55; 
} 

function four(val) 
{ 
    return val*1.725; 
} 

function five(val) 
{ 
    return val*1.9; 
} 

最后是的jquery.js:

$(document).ready(function(){ 
    $("button").click(function(){ 
     $("#placeholder").load("bmi_backend.js"); 
    }); 
}); 

这些是我的网站工作的代码,我确实有CSS也是如此,但我认为问题不在于此。如果有人能指导我解决这个问题,或者指导我正确的道路,那么我可以研究它并自己解决它,我将不胜感激!谢谢!

P.S对不起,这是一个可怕的帖子,这是我第一次发布。

+0

第一步通常是查阅文档。你有没有回顾[jQuery.load()](http://api.jquery.com/load/)? –

回答

0

你的问题是你有一个变量和功能相同的名称BMR。在BMR函数中,用male_bmr()/female_bmr()的结果代替函数。

要解决请尝试以下步骤:

  1. 改变函数名称独特的东西(例如calculate_bmr)。
  2. 更改函数display_gains中的代码以反映该名称(即,var value = calculate_bmr();

我不认为你需要单独加载脚本文件,因为你已经将它包含在页眉中。

+0

谢谢H77,你救了我的一天。感谢你的帮助!将使用更多! – ecosimon

+0

不客气! – H77

0

我认为​​需要html参数而不是js文件,因为您在此处执行此操作。

+0

真的!?让我现在就试试。感谢您的快速回复! – ecosimon

+0

啊,那不是它,而是看起来很好看,有些简单,有时我会忘记。 – ecosimon

相关问题