• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Gdzie jest błąd ? (JS)

0 głosów
449 wizyt
pytanie zadane 15 września 2018 w JavaScript przez Felix Obywatel (1,100 p.)
<!DOCTYPE html>
<html lang="pl">
<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>
</head>
<body>
    <input id="pole1" type="number">
    <input id="pole2" type="number">
    <input value="wynik" type="button" class="btn" onclick="suma()">
    <div class="wynik">0</div>
    <script>
        let pole1 = document.getElementById("pole1").value;
        let pole2 = document.getElementById("pole2").value;
        let wynik = document.querySelector('.wynik');
        


        function suma(){
            if(pole1 === ''|| pole2 === ''){
                wynik.textContent= 'puste';
            }

            else{
                let suma = pole1 + pole2;

                wynik.textContent = suma;
            }
        }


    
    

    </script>
</body>
</html>

Powie mi ktoś w czemu kod nie działa?

1 odpowiedź

+1 głos
odpowiedź 15 września 2018 przez Grzegorz :> Dyskutant (8,050 p.)
wybrane 16 września 2018 przez Felix
 
Najlepsza

Musisz sprawić, by funkcja sprawdziła wartości zmiennych po kliknięciu w przycisk. W kodzie, który podałeś, nieważne co byś wpisał w inputy, ich wartość będzie pusta, a to dlatego, że sprawdzana jest zaraz po załadowaniu strony :^)

Wystarczy, że wrzucisz te zmienne do funkcji:

function suma() {
            let pole1 = document.getElementById("pole1").value;
            let pole2 = document.getElementById("pole2").value;
            let wynik = document.querySelector('.wynik');
            if ((pole1 === '') || (pole2 === '')) {
                wynik.textContent = 'puste';
            } else {
                let suma = Number(pole1) + Number(pole2);

                wynik.textContent = suma;
            }
        }

Musisz również wskazać przeglądarce, że wartości, na których operujesz są liczbami, bo z automatu traktuje je jako tekst.
Robi się to jak zauważyłeś dodaniem 'Number(zmienna)', możesz również użyć 'parseInt(zmienna)' lub w przypadku liczb zmiennoprzecinkowych 'parseFloat(zmienna)'

Pozdrawiam :>

komentarz 16 września 2018 przez Felix Obywatel (1,100 p.)
Kurde tyle czasu nad tym siedziałem i nie mogłem znaleźć błędu. Dzięki :)
komentarz 16 września 2018 przez MrxCI Dyskutant (8,260 p.)
Mysle ze za odpowiedź należy się danie "najlepszej"

Podobne pytania

0 głosów
1 odpowiedź 1,141 wizyt
pytanie zadane 2 lutego 2020 w Python przez Laurencjusz Kocik Użytkownik (540 p.)
0 głosów
1 odpowiedź 3,012 wizyt
pytanie zadane 2 września 2018 w C i C++ przez Archeon Początkujący (480 p.)
0 głosów
2 odpowiedzi 522 wizyt
pytanie zadane 21 maja 2020 w JavaScript przez Dark Web Nowicjusz (190 p.)

93,599 zapytań

142,524 odpowiedzi

322,993 komentarzy

63,082 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...