Przejdź do głównej zawartości

Próbując wykonać kod z przykładu z błędem, ujrzymy w konsoli Error: lis.map is not a function.

Do stałej lis chcieliśmy przypisać listę z elementami li i do tego momentu kod wykonywany jest poprawnie.

Jednak document.querySelector() nie tworzy kolekcji w formie Array, a jako NodeList.

Obiekt NodeList w przeciwieństwie do obiektu Array nie zawiera metody map, więc wyrzucany jest błąd.

NodeList zawiera jednak metodę forEach, której możemy użyć zamiast map.

Użycie map było tutaj bezzasadne. Nie potrzebujemy wygenerować nowej tablicy z elementami na podstawie istniejącej.

Jeśli jednak mielibyśmy faktyczną potrzebę użycia map na obiekcie NodeList to musimy go skonwertować do Array, najprościej za pomocą konstrukcji Array.from(lis).

Po takiej konwersji, lista węzłów (node'ów) będzie już obiektem Array razem ze wszystkimi dostępnymi w tym obiekcie metodami (jak np. map).