Estoy tratando de obtener una lista en JavaScript (sin jQuery) de todos los elementos en la página con un nombre de clase específico. Por lo tanto, yo empleo la función getElementsByClassName() de la siguiente manera:¿Por qué getElementsByClassName de JavaScript proporciona un objeto que NO es una matriz?
var expand_buttons = document.getElementsByClassName('expand');
console.log(expand_buttons, expand_buttons.length, expand_buttons[0]);
Tenga en cuenta que tengo tres elementos de anclaje en mi página con la clase 'expandir'. Este console.log() muestra
[] 0 undefined
A continuación, por diversión, me tiró expand_buttons en su propia matriz de la siguiente manera:
var newArray = new Array(expand_buttons);
console.log(newArray, newArray.length);
Esto da salida repente
[NodeList[3]] 1
y hacer clic a través de la lista de nodos y ver los atributos de los tres elementos de anclaje "expandir" en la página. También vale la pena señalar que pude hacer que mi código funcionara en un w3schools test page.
También debe tenerse en cuenta que mi uso de document.getElementsByName realmente da como resultado (a la consola) una matriz de elementos, pero cuando pregunto por su longitud, me dice 0. De manera similar, si intento acceder un elemento de matriz que usa array_name[0]
como normal, emite 'indefinido', a pesar de que claramente hay un elemento dentro de una matriz cuando imprimo el objeto a la consola.
¿Alguien tiene alguna idea de por qué esto podría ser? Solo quiero recorrer los elementos DOM, y estoy evitando jQuery en este momento porque estoy tratando de practicar la codificación con JavaScript vanidoso.
Gracias,
ParagonRG
compruebe si no se cambia esa función –
¿Está ejecutando su código después de construir el DOM o antes? –
[Tenga cuidado con w3schools.] (Http://w3fools.com) – Pointy