J'essaie d'obtenir une liste en JavaScript (n'utilisant pas jQuery) de tous les éléments de la page avec un nom de classe spécifique. J'emploie donc la fonction getElementsByClassName() comme suit:Pourquoi getElementsByClassName de JavaScript fournit-il un objet qui n'est PAS un tableau?
var expand_buttons = document.getElementsByClassName('expand');
console.log(expand_buttons, expand_buttons.length, expand_buttons[0]);
Notez que j'ai trois éléments d'ancrage sur ma page avec la classe « élargir ». Cette console.log() Sorties
[] 0 undefined
Ensuite, pour les coups de pied, je jette expand_buttons dans son propre tableau comme suit:
var newArray = new Array(expand_buttons);
console.log(newArray, newArray.length);
Ceci produit tout à coup
[NodeList[3]] 1
et je peux cliquer sur à travers la nodelist et voir les attributs des trois éléments d'ancrage 'expand' sur la page. Il est également intéressant de noter que j'ai pu faire fonctionner mon code dans un w3schools test page.
Il peut également être à noter que mon utilisation de document.getElementsByName fait effectivement sortir (à la console) un tableau d'éléments, mais quand je demande sa longueur, il me dit 0. De même, si j'essaie d'accéder un élément de tableau utilisant array_name[0]
comme d'habitude, il sort 'indéfini', bien qu'il y ait clairement un élément à l'intérieur d'un tableau lorsque j'imprime l'objet sur la console.
Quelqu'un a-t-il une idée de la raison? Je veux juste faire une boucle sur les éléments DOM, et j'évite jQuery en ce moment parce que j'essaye de m'entraîner au codage avec JavaScript en vanilla.
Merci,
ParagonRG
vérifier si cette fonction n'est pas modifiée –
Exécutez-vous votre code après la construction du DOM ou avant? –
[Soyez prudent avec w3schools.] (Http://w3fools.com) – Pointy