Не можете использовать переменную из предыдущей функции в новой функции или синтаксисе? - PullRequest
0 голосов
/ 23 сентября 2018

Я довольно новичок в Javascript, и я пытаюсь вычислить BMR в "Oppgave A" мужчины 18 лет и ростом 180 сантиметров.Первая функция расчета работает.Я получаю количество калорий этого мужчины с определенной пользователем потребностью в весе каждый час.

Проблема: При попытке вычислить энергию, используемую для сидения за столом бмр * 1,2 , предыдущая переменная бмр i использовалась вФункция printBmr из функции оказывается неопределенной, когда я вызываю ее в новой функции printPalStille .

Вопрос: Как я могу использоватьпеременную bmr из предыдущей функции printBmr и использовать ее в новой функции * printPalStille * под новой переменной pal ?

Код:

<script>
     // __________________________________________________

    // Oppgave A
    var vekt = document.getElementById("idtxtVekt");
    var svar = document.getElementById("idpSvar");
    vekt.focus();


    vekt.addEventListener("keyup", printBmr);
    function printBmr (event) {
        if (event.keyCode === 13) {
        var kalkuler = 35.27 + (0.558 * vekt.value);
        var bmr = Math.floor(kalkuler);
        svar.innerHTML="Energimengden som kreves hver time for deg er: " + bmr + " kalorier i timen.";
        }


    }

    // __________________________________________________



    // Oppgave B
    var palStille = document.getElementById("idbtnStille");
    var palTur = document.getElementById("idbtnTur");
    var svarPal = document.getElementById("idpsvarPal");
    palStille.addEventListener("click", printPalStille);
    // palTur.addEventListener("click", printPalTur);

    function printPalStille (event) {
        var pal = bmr.value * 1.2;
        svarPal.innerHTML = "Din pal er: " + pal.value;
        console.log(bmr);
        }



     // __________________________________________________
</script>

Я начинающий, и я пытаюсь улучшить свои навыки JavaScript, но иногда вещи становятся слишком сложными дляменя понимают на форумах и в сообществах, поэтому у меня проблемы с устранением неполадок, связанных с другими вопросами, хотя ответ есть, и я прошу прощения за использование норвежских фраз и слов в моем коде: (*

Ответы [ 3 ]

0 голосов
/ 23 сентября 2018

Есть много способов, простейшим было бы инициировать переменную bmr над функцией вместо функции.

var bmr;
function printBmr (event) {
    if (event.keyCode === 13) {
    var kalkuler = 35.27 + (0.558 * vekt.value);
    bmr = Math.floor(kalkuler);
    svar.innerHTML="Energimengden som kreves hver time for deg er: " + bmr + " kalorier i timen.";
    }
}

теперь, после запуска функции, bmr будет содержать значение Math.floor(kalkuler), и вы сможете получить к нему доступglobaly.

0 голосов
/ 23 сентября 2018

В качестве краткого ответа на ваш вопрос вы можете объявить переменную bmr как глобальную.Кроме того, если вы допустили некоторые ошибки в своем коде, вы написали pal.value, bmr.value, и это неправильно, чтобы получить значение переменной, вам нужно будет только вызвать ее, используя ее имя, например: var something = somethingElse * 2.

Вот рабочая демонстрация для вас:

// notice the bmr variable, it's declared as global.
// it's recommended to declare all the variable at the beginning.
var vekt = document.getElementById("idtxtVekt"),
svar = document.getElementById("idpSvar"),
bmr = 0,
palStille = document.getElementById("idbtnStille"),
palTur = document.getElementById("idbtnTur"),
svarPal = document.getElementById("idpsvarPal");

vekt.focus();
vekt.addEventListener("keyup", printBmr);
palStille.addEventListener("click", printPalStille);

// functions
function printBmr (event) {
  if (event.keyCode === 13) {
var kalkuler = 35.27 + (0.558 * vekt.value);
bmr = Math.floor(kalkuler);
svar.textContent = "Energimengden som kreves hver time for deg er: " + bmr + " kalorier i timen.";
  }
}
function printPalStille (event) {
  var pal = bmr * 1.2;
  svarPal.textContent = "Din pal er: " + pal;
  console.log(pal);
}
<div id="boksEn" style="background-color: tomato; color: white; padding: 5px 5px;">
<h1>1. BMR</h1>
<p><b>BMR</b> er Energimengden som kreves for at organene våre skal fungere, og er avhengig av kjønn, alder, høyde og vekt.</p>
<p>Regn ut BMR for gutt 18 år og 180cm høy: </p>
<p>Tast inn vekt i kg: <input type="number" id="idtxtVekt"></p>
<p id="idpSvar">Svar: </p>
</div>
<div id="boksTo">
<h1>2. PAL</h1>
<p><b>PAL</b> er et uttrykk for ulike typer aktivitet, som for eksempel å sitte stille eller å gå en tur.</p>
<p>Velg én aktivitet for å finne ut av energiforbruk: </p>
<button id="idbtnStille">Stille sitting</button>
<button id="idbtnTur">Tur gående</button>
<p id="idpsvarPal">Svar: </p>
</div>

Я использовал атрибут textContent вместо innerHTML, поскольку мы просто добавляем некоторый текст, а не HTML.

0 голосов
/ 23 сентября 2018

Пожалуйста, прочитайте о глобальных и локальных переменных в JavaScript

Вы можете:

1) Вернуть это значение из другой функции (обернуть этот математический калькулятор в функцию ивызовите его непосредственно для переменных) [Рекомендовать это]

2) Объявить эту переменную как глобальную (из всех функций)

3) Нажать ее как параметр функции

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...