Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском.
Закрыт 1 год назад.
Решил написать свой простенький калькулятор калорий использую необходимые формулы. Однако столкнулся с такой проблемой, что скрипт работает только, если выбран пункт Низкая активность. То есть, если выбираю средняя или высокая, то он выдает одно и тоже значение.
Пришел к выводу, что программа просто не попадает в конструкцию else if, не могу понять почему.
Результат в консоли, если что:)
Скрипт
function caloryCalc(){
// НЕ ЗАБЫТЬ ОПТИМИЗИРОВАТЬ!!!!!
let weight = document.querySelector('#weight').value;
let growth = document.querySelector('#growth').value;
let age = document.querySelector('#age').value;
// Формула Base metabolic rate -bmr
weight = parseInt(weight);
growth = parseInt(growth);
age = parseInt(age);
bmr = 88.36 + (13.4 * weight) + (4.8 * growth) - (5.7 * age);
let activity = document.getElementById('activity');
let goals = document.getElementById('goal');
if (activity.selectedIndex == 1) {
bmr *= 1.375; // low activity
if (goals.selectedIndex == 1) {
bmr = bmr - (bmr / 100) * 20;
}
else if (goals.selectedIndex == 2) {
bmr = bmr;
}
else if (goals.selectedIndex == 3) {
bmr = bmr + (bmr / 100) * 20;
}
else if (activity.selectedIndex == 2) {
bmr *= 1.55; // middle activity
if (goals.selectedIndex == 1) {
bmr = bmr - (bmr / 100) * 20;
}
else if (goals.selectedIndex == 2) {
bmr = bmr;
}
else if (goals.selectedIndex == 3) {
bmr = bmr + (bmr / 100) * 20;
}
}
else if (activity.selectedIndex == 3) {
bmr *= 1.725;
if (goals.selectedIndex == 1) {
bmr = bmr - (bmr / 100) * 20;
}
else if (goals.selectedIndex == 2) {
bmr = bmr;
}
else if (goals.selectedIndex == 3) {
bmr = bmr + (bmr / 100) * 20;
}
}
}
console.log(bmr);
return false;
}
let btn = document.querySelector('.btn');
btn.onclick = caloryCalc;
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
margin-top: 300px;
text-align: center;
font-weight: 300;
font-size: 24px;
color: #ffffff;
background-image: linear-gradient(-122deg, rgb(100, 0, 190), rgb(190, 0, 160), rgb(225, 0, 55));
background-repeat: no-repeat;
height: 680px;
}
h1 {
text-align: center;
}
input:focus {
background: #eaeaea;
}
form {
width: 340px;
margin: 0 auto;
}
.field {
clear: both;
text-align: right;
}
label {
float: left;
padding-right: 10px;
}
#out {
font-weight: 300;
font-size: 40px;
}
.btn {
margin-top: 15px;
cursor: pointer;
border: 1px solid #ffffff;
width: 90px;
background: #fff;
padding: 5px;
font-weight: 600;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<link rel="stylesheet" href="./css/style.css">
</head>
<body>
<div class="form-wrap">
<div class="profile">
<h1>Расчет калорий</h1>
</div>
<form action="">
<fieldset>
<legend>Физические данные:</legend>
<div class="field"><label for="weight">Веc: </label>
<input type="text" id="weight" required placeholder="Ваш вес, кг" autofocus>
</div>
<div class="field"><label for="growth">Рост: </label>
<input type="text" id="growth" required placeholder="Ваш рост, см">
</div>
<div class="field"><label for="age">Возраст: </label>
<input type="text" id="age" required placeholder="Ваш возраст, лет">
</div>
<!-- Физическая активность -->
<select name="activity" id="activity">
<option value="Выберите активность">Выберите активность</option>
<option value="Низкая">Низкая</option>
<option value="Средняя">Средняя</option>
<option value="Высокая">Высокая</option>
</select>
<!-- Цели -->
<select name="goal" id="goal">
<option value="Выберите цель">Выберите цель</option>
<option value="Похудение">Похудение</option>
<option value="Поддержание">Поддержание</option>
<option value="Набор">Набор</option>
</select>
</fieldset>
<input type="submit" class="btn" value="Расчитать">
</form>
<p id="out">Результат: </p>
</div>
<script src="./js/script.js"></script>
</body>
</html>
На 30 строке пропустили }
(перед else if (activity.selectedIndex == 2)
), и при этом было одно лишние закрытие ниже по коду, почти в конце функции (перед console.log(bmr);
).
function caloryCalc(){
// НЕ ЗАБЫТЬ ОПТИМИЗИРОВАТЬ!!!!!
let weight = document.querySelector('#weight').value;
let growth = document.querySelector('#growth').value;
let age = document.querySelector('#age').value;
// Формула Base metabolic rate -bmr
weight = parseInt(weight);
growth = parseInt(growth);
age = parseInt(age);
bmr = 88.36 + (13.4 * weight) + (4.8 * growth) - (5.7 * age);
let activity = document.getElementById('activity');
let goals = document.getElementById('goal');
if (activity.selectedIndex == 1) {
bmr *= 1.375; // low activity
if (goals.selectedIndex == 1) {
bmr = bmr - (bmr / 100) * 20;
} else if (goals.selectedIndex == 2) {
bmr = bmr;
} else if (goals.selectedIndex == 3) {
bmr = bmr + (bmr / 100) * 20;
}
} else if (activity.selectedIndex == 2) {
bmr *= 1.55; // middle activity
if (goals.selectedIndex == 1) {
bmr = bmr - (bmr / 100) * 20;
} else if (goals.selectedIndex == 2) {
bmr = bmr;
} else if (goals.selectedIndex == 3) {
bmr = bmr + (bmr / 100) * 20;
}
} else if (activity.selectedIndex == 3) {
bmr *= 1.725;
if (goals.selectedIndex == 1) {
bmr = bmr - (bmr / 100) * 20;
} else if (goals.selectedIndex == 2) {
bmr = bmr;
} else if (goals.selectedIndex == 3) {
bmr = bmr + (bmr / 100) * 20;
}
}
console.log(bmr);
return false
}
let btn = document.querySelector('.btn');
btn.onclick = caloryCalc;
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
margin-top: 300px;
text-align: center;
font-weight: 300;
font-size: 24px;
color: #ffffff;
background-image: linear-gradient(-122deg, rgb(100, 0, 190), rgb(190, 0, 160), rgb(225, 0, 55));
background-repeat: no-repeat;
height: 680px;
}
h1 {
text-align: center;
}
input:focus {
background: #eaeaea;
}
form {
width: 340px;
margin: 0 auto;
}
.field {
clear: both;
text-align: right;
}
label {
float: left;
padding-right: 10px;
}
#out {
font-weight: 300;
font-size: 40px;
}
.btn {
margin-top: 15px;
cursor: pointer;
border: 1px solid #ffffff;
width: 90px;
background: #fff;
padding: 5px;
font-weight: 600;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<link rel="stylesheet" href="./css/style.css">
</head>
<body>
<div class="form-wrap">
<div class="profile">
<h1>Расчет калорий</h1>
</div>
<form action="">
<fieldset>
<legend>Физические данные:</legend>
<div class="field"><label for="weight">Веc: </label>
<input type="text" id="weight" required placeholder="Ваш вес, кг" autofocus>
</div>
<div class="field"><label for="growth">Рост: </label>
<input type="text" id="growth" required placeholder="Ваш рост, см">
</div>
<div class="field"><label for="age">Возраст: </label>
<input type="text" id="age" required placeholder="Ваш возраст, лет">
</div>
<!-- Физическая активность -->
<select name="activity" id="activity">
<option value="Выберите активность">Выберите активность</option>
<option value="Низкая">Низкая</option>
<option value="Средняя">Средняя</option>
<option value="Высокая">Высокая</option>
</select>
<!-- Цели -->
<select name="goal" id="goal">
<option value="Выберите цель">Выберите цель</option>
<option value="Похудение">Похудение</option>
<option value="Поддержание">Поддержание</option>
<option value="Набор">Набор</option>
</select>
</fieldset>
<input type="submit" class="btn" value="Расчитать">
</form>
<p id="out">Результат: </p>
</div>
<script src="./js/script.js"></script>
</body>
</html>
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Есть функция sort(fn)Как не проверяя результат, узнать в какую сторону сортируется массив (увеличение или уменьшение)?
Собственно говоря, вопрос в заголовкеЧто я хочу сделать, но не знаю как: при срабатывании event stop получить элемент, над которым отпустили блок,...
Всем привет! Обычным способом можно разбить "ul" на columns, прописав в стилях списка "columns: 3"Он сделает 3 колонки, по 2 "li" в каждой
Как переопределить в module scss глобальный класс officeUI fabric?