Pytanko. Dlaczego dostaje error - Uncaught TypeError: navItems.addEventListener is not a function

- Rejestracja:około 7 lat
- Ostatnio:ponad 3 lata
- Postów:3394
navItems = document.querySelectorAll('.nav-items');
Tworzy kolekcję obiektów. Nie możesz zrobić addEventListener
na kolekcji, jedynie na obiekcie.
- Rejestracja:ponad 12 lat
- Ostatnio:około 5 godzin
- Postów:1435
Bezsensem było by "zbiernie" tego pojedynczo (dodawanie klas do kazdego elementu)
Dobrze, że zauważasz bezsens tego. Jeszcze lepiej, gdybyś w takich sytuacjach (tj. powtarzanie podobnych czynności) od razu myślał "pętla!"
- Rejestracja:ponad 12 lat
- Ostatnio:około 5 godzin
- Postów:1435
Odpowiadaj w postach.
Zaskocze Cie. POmysłałem. Problemem jest iż nie wiem jak ja napisać heh. Pewnie trzeba utworzyć zmienną, do której pętla 'ściągnie' wszystkie elementy??
Mając już kolekcję elementów z querySelectorAll
możesz przeiterować się po nich za pomocą forEach
. Jakbym napisał kod byłoby za łatwo, sorry. To musi mieć jakiś aspekt dydaktyczny.
- Rejestracja:prawie 6 lat
- Ostatnio:prawie 6 lat
- Postów:12

- Rejestracja:około 7 lat
- Ostatnio:ponad 3 lata
- Postów:3394
Oba powyższe rozwiązania są poprawne. forEach
jest niby bardziej eleganckie, ale ostatnio czytam, że:
"Warning: JavaScript 1.6's for-each-in loops are deprecated; consider using ES6 for-of instead"
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/For-each-in_loops_are_deprecated

- Rejestracja:około 7 lat
- Ostatnio:ponad 3 lata
- Postów:3394
navItems[i].addEventListener (...)
- Rejestracja:około 6 lat
- Ostatnio:ponad rok
- Postów:136
Jeśli chodzi o eventy na wielu obiektach, pamiętaj, że jest jeszcze coś takiego jak event delegation
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.