Saltar al contenido principal
Codigo Heroe
Tarea anterior
JavaScript en el navegador5/19
A la lista de tareas
  1. 1. Conectar un script a la página
  2. 2. El método querySelector: buscar un elemento
  3. 3. El método classList.add: agregar una clase
  4. 4. El método querySelectorAll: buscar varios elementos
  5. 5. Recorrer una colección de elementos
  6. 6. Comprobar la propiedad isAvailable
  7. 7. Comprobar la propiedad isSpecial
  8. 8. La propiedad children: elementos hijos
  9. 9. El método createElement: crear un elemento
  10. 10. La propiedad textContent: contenido de texto
  11. 11. Una función para crear elementos
  12. 12. Simplificar el código con makeElement
  13. 13. La propiedad src: la ruta de la imagen
  14. 14. Una función para crear una tarjeta de producto
  15. 15. Probar la función que crea tarjetas
  16. 16. Usar un objeto de datos
  17. 17. Comprobar la disponibilidad del producto
  18. 18. Mostrar una oferta especial
  19. 19. Usar un arreglo de objetos
Siguiente tarea
  • Matriz de skills
  • Cursos
  • Registro
  • Iniciar sesión

Loading…
En unos segundos, estará listo.

  • Teoría
  • Teoría

Recorrer una colección de elementos

Ya encontramos todos los productos de la página. Ahora necesitamos acceder a cada elemento DOM de la colección y agregarle las clases correspondientes. ¿Cómo lo hacemos?

La colección DOM que devuelve querySelectorAll se parece a un arreglo. Eso es: se parece, pero no es un arreglo. Por eso también se dice que es un objeto de tipo arreglo. En otros cursos veremos las diferencias con más detalle. Por ahora recorreremos la colección DOM con el ciclo for que ya conocemos.

Recorramos los productos y agreguemos temporalmente la clase product--available a cada elemento DOM. Así comprobaremos que el ciclo funciona.

  • index.html
  • style.css
  • script.js
HTML
<!DOCTYPE html> <html lang="es"> <head> <meta charset="utf-8"> <title>Catálogo | Technomart</title> <link rel="stylesheet" href="technomart/setting.css"> <link rel="stylesheet" href="style.css"> </head> <body> <ul class="products"> <li class="product"> <h2 class="product__title">Alicates universales «Superagarre»</h2> <img class="product__image" src="technomart/good-1.jpg" width="200" height="150" alt="Alicates universales «Superagarre»"> <p class="product__price">800 ₽</p> </li> <li class="product"> <h2 class="product__title">Destornillador «Barrenita»</h2> <img class="product__image" src="technomart/good-2.jpg" width="200" height="150" alt="Destornillador «Barrenita»"> <p class="product__price">550 ₽</p> </li> <li class="product"> <h2 class="product__title">Pinzas «Copérnico»</h2> <img class="product__image" src="technomart/good-3.jpg" width="200" height="150" alt="Pinzas «Copérnico»"> <p class="product__price">1,350 ₽</p> </li> <li class="product"> <h2 class="product__title">Rotomartillo «¡Hola, vecino!»</h2> <img class="product__image" src="technomart/good-4.jpg" width="200" height="150" alt="Rotomartillo «¡Hola, vecino!»"> <p class="product__price">7,500 ₽</p> </li> <li class="product"> <h2 class="product__title">Martillo «Mjölnir»</h2> <img class="product__image" src="technomart/good-5.jpg" width="200" height="150" alt="Martillo «Mjölnir»"> <p class="product__price">2,000 ₽</p> </li> </ul> <script src="script.js"></script> </body> </html>
CSS
.product { position: relative; display: flex; flex-direction: column; align-items: center; width: 220px; margin-bottom: 20px; text-align: center; border: 1px solid #cccccc; } .product--available::before { content: ""; position: absolute; top: 5px; left: 5px; width: 15px; height: 15px; padding: 5px; background-image: url("technomart/check.svg"); background-repeat: no-repeat; background-position: center; background-size: 18px; border: 1px solid #4eb543; border-radius: 50%; } .product--unavailable { filter: grayscale(1) opacity(0.7); } .product--unavailable::before { content: "Agotado"; position: absolute; top: 0; left: 0; padding: 5px; font-size: 14px; } .product--special { flex-basis: 100%; order: -1; border-color: #ee3643; } .product--special::after { content: "Producto del día"; position: absolute; top: 0; right: 0; height: 30px; padding-right: 10px; padding-left: 10px; line-height: 30px; color: #ffffff; background-color: #ee3643; }
JavaScript
var catalogData = [ { isAvailable: true, isSpecial: false }, { isAvailable: false, isSpecial: false }, { isAvailable: true, isSpecial: true }, { isAvailable: true, isSpecial: false }, { isAvailable: false, isSpecial: false } ]; var updateCards = function (products) { var elements = document.querySelectorAll('.product'); console.log(elements); }; updateCards(catalogData);

El código ha cambiado, haz clic en "Actualizar" o activa la ejecución automática.

Ha ido a otra página

Haga clic dentro del mininavegador para poner el foco en esta ventana.

100%
Consola
ObjetivosRealizado
0

    Dentro de la función updateCards:

    1. Elimina la salida de elements a la consola y, en su lugar, escribe un ciclo for que recorra elements. Aumenta i desde 0 mientras sea menor que la longitud de la colección.
    2. Dentro del ciclo, crea la variable element y guarda en ella el elemento DOM actual: elements[i].
    3. Muestra element en la consola.
    4. Agrega a element la clase product--available.
    Codigo Heroe

    © 2023-2026, codigoheroe.com