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

Jak policzyć sumę elementów tablicy?

VPS Starter Arubacloud
0 głosów
1,491 wizyt
pytanie zadane 8 czerwca 2018 w JavaScript przez Andrzej_IT Nowicjusz (160 p.)

Tak jak w temacie. Chciałem napisać program w js, który na bieżąco będzie liczył średnią ocen podawanych przez użytkownika. Wiadomo, może ich podać niekończenie wiele dlatego zrobiłem coś takiego: 

<html>
<head>
    <meta charset="utf-8">
    <script>    
        var oceny = [];
        var suma = 0;
        var srednia;
        
        function licz(){
            var x = document.getElementById("ocena").value;
            
            if (x <= 6 && x > 0){
                
            oceny.push(x);
                
            }else{
                alert("Nie ma takiej oceny")
            }
            
            for(var i = 0; i < oceny.length; i++){
                suma += oceny[i];
            }
            
            srednia = suma/oceny.length;
            
            document.getElementById("oce").innerHTML = oceny;
            
            document.getElementById("sre").innerHTML = srednia;
        }
        
    </script>
</head>
<body>
   Podaj oceny: <input type="number" id="ocena" max="6" min="1">
    <input type="button" id="klik" value="dodaj" onclick="licz()"><br>
    <p id="oce"></p> <br><br>
    Twoja Średnia to: <p id="sre"></p> 
</body>
</html>

 Wie ktoś, gdzie może istnieć błąd, tz. istnieć istnieje bo nie liczy tak jak zamierzałem :P

komentarz 8 czerwca 2018 przez RafalS VIP (122,820 p.)
Mozliwe ze wczytane x jest napisem (stringiem) i trzeba z niego wycisgnac liczbe.

3 odpowiedzi

+1 głos
odpowiedź 8 czerwca 2018 przez kenjiro244 Dyskutant (8,600 p.)
1. Unikaj dodawania wywołania funkcji za pomocą onlick lepiej użyć addEventListener

2. Przy każdym wywołaniu funkcji musisz wyzerować od nowa wartość sumy.

Bo teraz to wygląda tak podajesz:

1 - suma równa się 1;

5 = suma równa się 7;

4 = suma równa się 17 raczej nie tak powinno być.

3. Zamieniaj każdą dodaną wartość na liczbę jeżeli nią nie jest np za pomocą parseInt
+1 głos
odpowiedź 8 czerwca 2018 przez lateM Pasjonat (17,660 p.)

Po pierwsze tak jak - RafalS pisze - input zwraca zawsze string, więc musisz zmienć tą wartość którą podaje użytkownik na number. Po drugie: zmienna Suma przechowuje w tej chwili wartość z poprzedniego obliczania średniej i dodajesz do niej za każdym razem nowe liczby...

Te zmienne:

var suma = 0;
var srednia = 0;

Przenieś do wnętrza funkcji licz(){} na samą górę.

I staraj się, żeby zmienne ograniczała funkcja, bo widzisz, co się dzieje.

 

 

0 głosów
odpowiedź 9 czerwca 2018 przez Andrzej_IT Nowicjusz (160 p.)
Dzięki za rady ;D

Teraz już wiem co zmienić :D
komentarz 9 czerwca 2018 przez ProgramistaStepek Nałogowiec (27,020 p.)

Polecam też pobawić się nieco bardziej zaawansowanymi technikami, jak reduce na przykład. Warto takie rzeczy powoli poznawać.

Podobne pytania

0 głosów
0 odpowiedzi 189 wizyt
0 głosów
1 odpowiedź 726 wizyt
pytanie zadane 17 marca 2020 w C i C++ przez ResCrove Obywatel (1,700 p.)
0 głosów
1 odpowiedź 118 wizyt

92,454 zapytań

141,262 odpowiedzi

319,089 komentarzy

61,854 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.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...