Próbuję uzyskać listę w JavaScript (bez użycia jQuery) wszystkich elementów na stronie o określonej nazwie klasy. Dlatego zatrudniamy funkcję getElementsByClassName() w następujący sposób:Dlaczego instrukcje getElementsByClassName JavaScript dostarczają obiekt, który NIE jest tablicą?
var expand_buttons = document.getElementsByClassName('expand');
console.log(expand_buttons, expand_buttons.length, expand_buttons[0]);
Zauważ, że mam trzy elementy kotwiące na mojej stronie z klasą „rozwinąć”. Ten console.log() wyprowadza
[] 0 undefined
Następnie, dla zabawy, rzuciłam expand_buttons do własnej tablicy następująco:
var newArray = new Array(expand_buttons);
console.log(newArray, newArray.length);
to nagle wyjść
[NodeList[3]] 1
i mogę kliknąć przez nodelistę i zobacz atrybuty trzech elementów kotwicy "rozwiń" na stronie. Warto również zauważyć, że udało mi się uzyskać mój kod działający pod numerem w3schools test page.
Warto również zauważyć, że moje użycie document.getElementsByName faktycznie wyprowadza (do konsoli) tablicę elementów, ale kiedy pytam o jej długość, informuje mnie 0. Podobnie, jeśli próbuję uzyskać dostęp element tablicy używający normalnie, jak zwykle, wypisuje "niezdefiniowany", mimo że wyraźnie jest elementem wewnątrz tablicy, kiedy drukuję obiekt do konsoli.
Czy ktoś ma pojęcie, dlaczego tak się dzieje? Po prostu chcę przechodzić przez elementy DOM i unikam jQuery w tej chwili, ponieważ próbuję ćwiczyć kodowanie przy pomocy wanilii JavaScript.
Dzięki,
ParagonRG
Sprawdź, czy ta funkcja nie została zmieniona –
Czy używasz kodu po zbudowaniu DOM lub wcześniej? –
[Bądź ostrożny z w3schools.] (Http://w3fools.com) – Pointy