Wskaźnik BMI - noga z JS

0

Witam,

Staram się zrobić wskaźnik BMI na zajęcia do oceny ale za żadne skarby nie mogę rozgryźć o co w tym chodzi
ponieważ mało mam doczynienia z JS, tyle co na zajęciach a chodzę do 2 letniej policealnej.
"+" z zajęć nic się nie wynosi bo osoba która wykłada robi z nami co innego i każe robić co innego.

Taki kod udało mi się wypisać ale mogę zrobić nic dalej..
Jakie wartości bym nie wpisał na stronie to non-stop wyskakuje mi niedowaga.

Czy mógłby mi ktoś wskazać przynajmniej czego tu brakuje? Co mógłbym dodać? Nie potrzebuje kodu tylko wskazówki w którą stronę powinienem iść i co robię źle.

>   <body> 
>     
>             Waga (kg)<br>
>             <input id="kg" type="number" />
>            <br><br>
>            
>             Wzrost (cm)<br>
>             <input id="cm" type="number" />
>             <br><br>       
>             
>             Wskaźnik BMI<br>
>             <input type="submit" value="Prześlij" onclick="licz()" />
>             <div id="wynik">.....</div>         
>             
>             <script>
>             
> 
>                 function licz()
>                 {
>                     
>                     var x = document.getElementById("kg").value;
>                     var y = document.getElementById("cm").value;
>                     
>                     var BMI = (x/(y*y);
>                     
>                     
>                     if (BMI<18,5)
>                         document.getElementById("wynik").innerHTML="Niedowaga";
>                     
>                     else if (18,5<=BMI<=24,9)
>                         document.getElementById("wynik").innerHTML="Prawidłowa waga";
>                     
>                     else if (25<=BMI<=29,9)
>                         document.getElementById("wynik").innerHTML="Nadwaga";
>                     
>                     else if (BMI>30)
>                         document.getElementById("wynik").innerHTML="Otyłość";                    
>                     
>                 } 
>                 
>             </script>
>     
>     </body>
3

var BMI = (x/(y*y);
Niezamknięty nawias.

Wzrost we wzorze na BMI należy podawać w metrach (albo przeliczyć na metry wewnątrz skryptu).

Konstrukcja if / else if wymaga użycia klmamer:
https://www.w3schools.com/js/js_if_else.asp

Część dziesiętną liczby oddzielamy kropką 18,5 > 18.5.

Taki zapis raczej nie jest poprawny
if (18.5 <= BMI <= 24.9)
użyj
if ((18.5 <= BMI) && (BMI <= 24.9))

0

Łoo dzięki więlkie :)

0

Jeszcze odkopując temat, wiem że nie ładnie tak post pod postem pisać ale zaryzykuje.

Udało się to zrobić w ten sposób:

    <body> 
    
            Waga (kg)<br>
            <input type="number" id="kg" />
           <br><br>
           
            Wzrost (cm)<br>
            <input type="number" id="cm" />
            <br><br>       
            
            <input type="submit" value="Wskaźnik BMI" onclick="liczxy()" /><br />&nbsp; 
            <div id="wynik">WYNIK</div>
            
        

            <script>
            
                    function liczxy()
                    {
                        
                        var x = document.getElementById("kg").value;
                        var y = document.getElementById("cm").value;

                        var BMI = (x/(y*y)*10000);
                       

                        if (BMI<18.5){
                            document.getElementById("wynik").innerHTML = BMI;
                            //"Niedowaga"
                        }
                        
                        else if ((18.5<=BMI) && (BMI<=24.9)){
                            document.getElementById("wynik").innerHTML = BMI;
                            //"Prawidłowa waga"
                        }
                        
                        else if ((25<=BMI) && (BMI<=29.9)){
                            document.getElementById("wynik").innerHTML = BMI;
                            //"Nadwaga"
                        }
                        
                        else if (BMI>30){
                            document.getElementById("wynik").innerHTML = BMI;      
                            //"Otyłość"
                        }
                        
                    }  
            
            </script>
    
    </body>

Pierwszy problem:
Dzięki temu *var BMI = (x/(y*y)10000); działa i zawiera się prawidłowo w przedziałach tylko przez to że jest tyle zer jest strasznie dużo miejsc po przecinku
i nie wiem jak się tego pozbyć, zakładam że jest inny sposób czyli zrobienie przeliczenia na metry jak wspomniałeś ale pewnie jest dużo więcej pracy z tym. Bo nie wiem jak inaczej podać to w metrach.

Drugi problem:
To nie wiem jak teraz zrobić żeby obok wyniku który się wyświetla, czyli liczby. Dodać nadwaga, niedowaga itd. np.: 20.761245674740486 - Prawidłowa waga.

screenshot-20191118203808.png
Musiałbym zrobić to poprzez alert czy da radę jedno obok drugiego dodać?

2
  1. Poczytaj sobie o zaokrąglaniu liczb.
  2. Poczytaj sobie o łączeniu tekstu ze zmienną
1

strasznie dużo miejsc po przecinku

https://www.w3schools.com/jsref/jsref_round.asp

Dodać nadwaga, niedowaga

Np:

document.getElementById("wynik").innerHTML = BMI + " - niedowaga";
//"Niedowaga"
0
Freja Draco napisał(a):

strasznie dużo miejsc po przecinku

https://www.w3schools.com/jsref/jsref_round.asp

Dodać nadwaga, niedowaga

Np:

document.getElementById("wynik").innerHTML = BMI + " - niedowaga";
//"Niedowaga"

Spróbuję jak będę się dziś przy tym bawił, zrobić "var BMI = Math.round(x/(y*y)*10000);" zobaczymy czy pyknie. I jeszcze BMI + "- niedowaga" to już brak mojej wyobraźni bo robiłem tak ale bez tego plusa i nie wpadłem na to żeby tego plusika wstawić :/ Muszę jeszcze trochę pouczyć ale póki co do weekendu mi starczy na zaliczenie pracy :D

Dzięki za pomoc :)

0
Yaniak napisał(a):

I jeszcze BMI + "- niedowaga" to już brak mojej wyobraźni bo robiłem tak ale bez tego plusa i nie wpadłem na to żeby tego plusika wstawić :/

JS jest głupi, bo łączenie stringów
"abc" + "def" ---> "abcdef"
i sumowanie liczb
2 + 3 ----> 5
realizuje tym samym operatorem +.

0

Muszę przyznać że trzeba mieć łeb do programowania, JS nie moge ogarnąć, a nie tak dawno chciałem brać się za Pythona :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1