Верстка, CSS, HTML, SVG

Почему неправильно работает код на javascript

Пишу калькулятор имт на js

Постоянно показывает "недостаточная (дефицит) масса тела"

JS: https://pastebin.com/7NaZmefb
HTML: https://pastebin.com/NFPx03RG
Во первых, у тебя множество бессмысленных ошибочный сравнений. Если индекс равен 15.991, твой код выдаст '3 степень ожирения'. Т.к. проверяется <= 15.99 и >= 16. А попадание в интервал (15.99; 16) никак не проверяется. И так в пяти местах.

Надо:
 if (index < 16) {
alert('выраженный дефицит массы тела');
} else if (index < 18.5) {
alert('недостаточная (дефицит) масса тела');
} else if (index < 25) {
alert('норма');
} else if (index < 30) {
alert('избыточная масса тела (предожирение)');
} else if (index < 35) {
alert('1 степень ожирения');
} else if (index < 40) {
alert('2 степень ожирения');
} else {
alert('3 степень ожирения');
}

Во вторых, такой индекс массы тела - откровенная глупость. Он не учитывает, что при одном росте у разных людей разная ширина плеч, разный диаметр грудной клетки, разная мышечная масса. И, соответственно, совершенно разный оптимальный вес.
Denis Matviyuk
Denis Matviyuk
61 132
Лучший ответ
Пиши что-нибудь более простое.
Вот это
if (16 <= index <= 18.49)
в JS не сработает так как хотелось, нужно использовать
if (16 <= index && index<= 18.49)
Иван Титов
Иван Титов
68 782
Проблема в условии, которое проверяет, попадает ли значение index в определенный диапазон. Вы пытаетесь использовать оператор <= для проверки двух условий, что является ошибкой. Вместо этого нужно использовать логический оператор && (и), чтобы проверить, что значение index больше или равно одному значению и меньше или равно другому.

Вот исправленный код, где изменены условия для else if:
 let height = document.querySelector("#height"); 
let weight = document.querySelector("#weight");
let resultButton = document.querySelector("#getResult");
let index;

resultButton.addEventListener("click", () => {
index = Number(weight.value) / (Number(height.value) * Number(height.value));

if (index = 16 && index = 18.50 && index = 25 && index = 30 && index = 35 && index
Улыбнуло, ты в index записываешь: weight / height * height, в чем смысл? На первый взгляд не видно ошибки, разные числа вводил?
KB
K?ltek?n Bey
6 773