Pytanko. Dlaczego dostaje error - Uncaught TypeError: navItems.addEventListener is not a function
ERROR - is not a function
- Rejestracja: dni
- Ostatnio: dni
- Postów: 3394
navItems = document.querySelectorAll('.nav-items');
Tworzy kolekcję obiektów. Nie możesz zrobić addEventListener na kolekcji, jedynie na obiekcie.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 1452
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: dni
- Ostatnio: dni
- Postów: 1452
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: dni
- Ostatnio: dni
- Postów: 12
Coś w ten deseń?
const navItems = document.querySelectorAll('.nav-item');
for (i = 0; i < navItems.length; ++i ) {
console.log("forEach worked");
}
- Rejestracja: dni
- Ostatnio: dni
- Postów: 12
Mam takie rozwiązanie - https://jsfiddle.net/yg0dem12/
- Rejestracja: dni
- Ostatnio: dni
- 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: dni
- Ostatnio: dni
- Postów: 12
OK, ale teraz w tym 1 rozwiązaniu należy w inny sposób napisać addEventListener itu niestety utknąłem.
Jakaś podpowiedź?
- Rejestracja: dni
- Ostatnio: dni
- Postów: 3394
navItems[i].addEventListener (...)
- Rejestracja: dni
- Ostatnio: dni
- Postów: 136
Jeśli chodzi o eventy na wielu obiektach, pamiętaj, że jest jeszcze coś takiego jak event delegation