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

problem z ładowaniem danych w pętli JavaScript

Object Storage Arubacloud
0 głosów
134 wizyt
pytanie zadane 9 września 2017 w Nasze projekty przez Kamila Użytkownik (680 p.)
Cześć Forumowicze!

Piszę appkę mającą zwracać aktualną pogodę oraz pogodę na najbliższych 5/16 dni.

Korzystam z popularnego API  https://openweathermap.org/api . Aktualna pogoda pięknie sie wyświetla. Wszystko bezproblemowo, ale jak chcę wyświetlić dane na najbliższych 5 dni w pętli konsola wyrzuca błąd:

"Uncaught TypeError: Cannot read property 'dt_txt' of undefined"  (dt_txt ma zwrócić datę).

Nie wiem co jest nie tak, bo w samej konsoli jestem w stanie te dane wyświetlić, jednak na stronie już nie :/.

appkę można przetestować pod adresem http://kamilapawlik.pl/deploy/

Pozdrawiam
komentarz 9 września 2017 przez ScriptyChris Mędrzec (190,190 p.)
edycja 9 września 2017 przez ScriptyChris

Tablica forecastData.list ma długość 40. W każdej iteracji pętli wykonuje się i += 8, czyli i przyjmuje kolejno wartości: 0, 8, 16, 24, 32, 40. Gdy i ma wartość 40 i próbujesz odczytać taki indeks tablicy, to pojawia się błąd, ponieważ ostatnim indeksem tablicy o długości 40 jest 39 (tablice numerujemy od zera). Dlatego możesz np. postawić dodatkowy warunek zakończenia pętli: i + 8 < forecastData.list.length. Wtedy, przed wykonaniem następnej iteracji, pętla sprawdzi czy po podniesieniu wartości i o 8 nie wyjdzie poza ostatni indeks tablicy.

komentarz 9 września 2017 przez criss Mędrzec (172,590 p.)

Miałeś na myśli i + 8? W przypadku += jeśli warunek przejdzie, to skończy się na podniesieniu o 16.

komentarz 9 września 2017 przez ScriptyChris Mędrzec (190,190 p.)
Racja. Dzięki za zwrócenie uwagi. Poprawiłem.
komentarz 10 września 2017 przez Kamila Użytkownik (680 p.)
wielkie dzięki. Działa :)

1 odpowiedź

0 głosów
odpowiedź 9 września 2017 przez niezalogowany
wybrane 10 września 2017 przez Kamila
 
Najlepsza

for (i = 0; i <= forecastData.list.length; i += 8) {

< zamiast <=

Tablice indeksowane są od zera, stąd liczba określająca ostatni indeks jest o jeden mniejsza od długości tablicy

Podobne pytania

0 głosów
1 odpowiedź 117 wizyt
pytanie zadane 24 maja 2017 w JavaScript przez ArturoS159 Początkujący (440 p.)
+1 głos
4 odpowiedzi 167 wizyt
0 głosów
1 odpowiedź 215 wizyt
pytanie zadane 21 września 2017 w JavaScript przez amiluke Obywatel (1,120 p.)

92,555 zapytań

141,404 odpowiedzi

319,558 komentarzy

61,940 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...