Как использовать значения, полученные из вызова функции внутри функции в JavaScript?

1

Я пытаюсь выяснить, как использовать значения из вызова функции (Bmi в BMI) в рамках другой функции (HealthCat), и я пытаюсь использовать полученные значения для выполнения потока управления, чтобы получить желаемый результат на моем html. Однако я не уверен, как использовать значения из вызова двойной функции. Помощь очень ценится! спасибо заранее!

Вот мой html:

<!DOCTYPE html>

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <link rel="stylesheet" href="css/styles.css">
    <title>BMI Calculator</title>
</head>

<body>
    <h1>BMI Calculator</h1>
    <p>
      <label>Enter weight:</label>
      <input type="text" id="weight" placeholder = "Enter your weight in kg">
    </p>

    <p>
      <label>Enter height:</label>
      <input type="text" id="height" placeholder="Enter your height in m">
    </p>

    <!--Display-->
    <input type="button" onclick="BMI()" value="BMI"/>
    <p id="result"></p>

    <input type="button" onclick="HealthCat()" value="HealthCat"/>
    <p id="Hresult"></p>

    <script src="bmiScript.js"></script>
</body>
</html>

И вот мой javascript:

function BMI(){
   var Weight = document.getElementById("weight").value;
   var Height = document.getElementById("height").value;
   var Bmi = Weight/(Height*Height);
   document.getElementById("result").innerHTML = Bmi;
}

function HealthCat(){
   BMI();
   if(Bmi<18.50){
      document.getElementById("Hresult").innerHTML="Under weight";

   }else if (Bmi>18.5 && Bmi <23) {
      document.getElementById("Hresult").innerHTML="Normal weight";

   }else if (Bmi>23 && Bmi <27.5) {
      document.getElementById("Hresult").innerHTML="Over weight";

   }else if (Bmi>27.5) {
      document.getElementById("Hresult").innerHTML="Obese";
   }
}
Теги:

1 ответ

4
Лучший ответ

Вы не можете использовать значение локальной переменной в одной функции из другой функции. Как только выполнение функции завершается, локальные переменные destroyed и больше не могут использоваться. Чтобы использовать переменную Bmi извне функции BMI, вам нужно вернуть переменную, чтобы вызывающая функция могла ее использовать:

function BMI(){
   var Weight = document.getElementById("weight").value;
   var Height = document.getElementById("height").value;
   var Bmi =  Weight/(Height*Height);
   document.getElementById("result").innerHTML =Bmi;
   return Bmi; // Return the Bmi value.
}

function HealthCat(){
   var Bmi = BMI(); // Use the returned Bmi value
   if(Bmi<18.50){
      document.getElementById("Hresult").innerHTML="Under weight";

   }else if (Bmi>18.5 && Bmi <23) {
      document.getElementById("Hresult").innerHTML="Normal weight";

   }else if (Bmi>23 && Bmi <27.5) {
      document.getElementById("Hresult").innerHTML="Over weight";

   }else if (Bmi>27.5) {
      document.getElementById("Hresult").innerHTML="Obese";
   }
}
  • 1
    Для полноты картины вы можете объявить Bmi глобальной переменной, но подход в этом ответе намного лучше (он не загрязняет глобальное пространство).
  • 0
    Спасибо мужчина! Мне не пришло в голову, что я могу использовать return, так как я новичок в javascript.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню