Kod nie działa dla liczb ujemnych

Odpowiedz Nowy wątek
2018-11-21 00:37
Krwawy Młot
0

Nie wiem dlaczego kod ten nie działa gdy w obu polach są liczby ujemne.


<input type="text" id="pole1" />
<input type="text" id="pole2" />
<input type="submit" value="Pokaż" onclick="wypisz()"/>
<div id="wynik"></div>
        <script>

            function wypisz()
            {
                var liczba1 = document.getElementById("pole1").value;
                var liczba2 = document.getElementById("pole2").value;
                var napis = "";

                if (((isNaN(liczba1)) || (liczba1 == "")) && ((isNaN(liczba2)) || (liczba2 == "")))
                {
                    document.getElementById("wynik").innerHTML = "Nieprawidłowy input w obu polach!";
                }
                else if ((isNaN(liczba1)) || (liczba1 == ""))
                {
                    document.getElementById("wynik").innerHTML = "Nieprawidłowy input w polu 1!";
                }
                else if ((isNaN(liczba2)) || (liczba2 == ""))
                {
                    document.getElementById("wynik").innerHTML = "Nieprawidłowy input w polu 2!";
                }
                else {

                    if (liczba1 < liczba2)
                    {
                        for (i=liczba1; i<=liczba2; i++)
                        {
                            napis = napis + i + " ";
                        }
                        document.getElementById("wynik").innerHTML = napis;
                    }
                    else if (liczba1 > liczba2)
                    {
                        for (i=liczba1; i>=liczba2; i--)
                        {
                            napis = napis + i + " ";
                        }
                        document.getElementById("wynik").innerHTML = napis;
                    }
                    else if (liczba1 === liczba2) {
                        document.getElementById("wynik").innerHTML = "Liczby są takie same!";
                    }
                }
            }

        </script>

Pozostało 580 znaków

2018-11-21 07:45
0

Twoje dane z inputów traktowane są jako string - zobacz, że Twój kod nie działa poprawnie jak wpiszesz liczby np 5 i 15.
Rozwiązaniem jest skonwertowanie liczba na inty -

 liczba1=parseInt(liczba1);
 liczba2=parseInt(liczba2);

Wstaw sobie te dwie linijki przed tym kodem

...
if (liczba1 < liczba2)
{
...

Pozostało 580 znaków

2018-11-21 10:53
0

@axelbest: Dobrą praktyką jest zawsze precyzować system liczbowy przy rzutowaniu na int'a. Czasami może nam się zaplątać jakieś 0 przed liczbą (co w JavaScript wcale nie jest takie mało prawdopodobne) i wtedy parseInt(0700) da nam 448. Powodzenia w znalezieniu takiego błędu :D

Tak więc

// zamiast 
parseInt(liczba1);
// to
parseInt(liczba1, 10);
edytowany 3x, ostatnio: Desu, 2018-11-21 10:54

Pozostało 580 znaków

2018-11-21 14:16
Krwawy Młot
0

Dzięki wielkie za odpowiedź @axelbest i @Desu. Wczoraj 1.5 kawy nad tym siedziałem i nie mogłem znaleźć błędu ;)

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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