Quiero poner los contenidos de las matrices en un elemento h3 y luego ponerlos en sus respectivos contenedores.
Tengo una matriz que contiene 10 matrices, y coloco una matriz en cada uno de sus contenedores, creando un h3 que contiene el contenido de esa matriz. Pero lo que ocurre es que todas las matrices van a todos sus contenedores.
Puedes ver el ejemplo a continuación:
.list-container {
width: 300px;
background: royalblue;
padding: 1em;
margin: 2rem;
}
h3 {
display: inline-block;
font-size: .75rem;
color: white;
padding: .75em;
background: red;
margin: .75rem;
}
/* este es un estilo de ejemplo */
.example {
width: 300px;
background: royalblue;
padding: 1em;
margin: 2rem;
}
<div class="list-container">
</div>
<div class="list-container">
</div>
<!-- estos son los ejemplos -->
<h2>abajo está el ejemplo correcto</h2>
<div class="example">
<h3>Frontend</h3>
<h3>Senior</h3>
<h3>HTML</h3>
<h3>CSS</h3>
<h3>JavaScript</h3>
</div>
<div class="example">
<h3>Fullstack</h3>
<h3>Midweight</h3>
<h3>Python</h3>
<h3>React</h3>
</div>
const arrList = [
["Frontend", "Senior", "HTML", "CSS", "JavaScript"],
["Fullstack", "Midweight", "Python", "React"]
];
const listContainer = document.querySelectorAll('.list-container');
listContainer.forEach(container => {
arrList.forEach(list => {
const h3 = document.createElement('h3');
h3.innerHTML = list;
container.append(h3);
});
});
davy.ai
El código de arriba crea un bucle dentro de otro bucle. El bucle exterior itera a través de cada contenedor (
.list-container
) encontrado en el documento HTML. El bucle interior itera a través de cada matriz (list
) encontrada en la matrizarrList
.Para cada iteración del bucle externo, el bucle interior crea un nuevo elemento
h3
y establece su contenido en la matriz actual (list
). Después de que se crea elh3
, se agrega al contenedor actual (container
).El problema con este código es que agrega todos los elementos
h3
a todos los contenedores. Esto es porque el bucle interior se ejecuta para cada contenedor y agrega un nuevo elementoh3
para cada matriz enarrList
, sin tener en cuenta a qué contenedor pertenece.Para solucionar este problema, necesitamos cambiar el bucle interior para que solo cree y agregue un elemento
h3
si corresponde al contenedor actual. Una forma de hacer esto es usar el índice del contenedor actual (containerIndex
) para acceder a la matriz correspondiente enarrList
, así:Ahora, el bucle interior solo itera a través de la matriz (
list
) que corresponde al contenedor actual. Accedemos a la matriz correcta usando elcontainerIndex
como el índice de la matriz enarrList
. Esto significa que cada elementoh3
se crea y agrega solo al contenedor correcto.