for es6 asociativo array javascript foreach

javascript - es6 - El uso de forEach en una matriz de getElementsByClassName da como resultado "TypeError: undefined no es una funciĆ³n"



javascript foreach key value (3)

Eso es porque document.getElementsByClassName devuelve una HTMLCollection , no una matriz.

Afortunadamente es un objeto "similar a una matriz" (que explica por qué se registra como si fuera un objeto y por qué puede iterar con un bucle for estándar), por lo que puede hacer esto:

[].forEach.call(document.getElementsByClassName(''myClass''), function(v,i,a) {

Con ES6 (en los navegadores modernos o con Babel), también puede usar Array.from construye matrices de objetos tipo array:

Array.from(document.getElementsByClassName(''myClass'')).forEach(v=>{

o disemine el objeto parecido a una matriz a una matriz:

[...document.getElementsByClassName(''myClass''))].forEach(v=>{

En mi JSFiddle , simplemente estoy tratando de iterar sobre una matriz de elementos. La matriz no está vacía, como lo prueban los enunciados de registro. Sin embargo, la llamada a forEach me da el forEach (no tan útil) "Unkeught TypeError : undefined no es una función".

Debo estar haciendo algo estúpido; ¿Qué estoy haciendo mal?

Mi código:

var arr = document.getElementsByClassName(''myClass''); console.log(arr); console.log(arr[0]); arr.forEach(function(v, i, a) { console.log(v); });

.myClass { background-color: #FF0000; }

<div class="myClass">Hello</div>


Intenta esto, debería funcionar:

<html> <head> <style type="text/css"> </style> </head> <body> <div class="myClass">Hello</div> <div class="myClass">Hello</div> <script type="text/javascript"> var arr = document.getElementsByClassName(''myClass''); console.log(arr); console.log(arr[0]); arr = [].slice.call(arr); //I have converted the HTML Collection an array arr.forEach(function(v,i,a) { console.log(v); }); </script> <style type="text/css"> .myClass { background-color: #FF0000; } </style> </body> </html>


en caso de que desee acceder al ID de cada elemento de una clase específica, puede hacer lo siguiente:

Array.from(document.getElementsByClassName(''myClass'')).forEach(function(element) { console.log(element.id); });