Saltar al contenido principal
Codigo Heroe
Tarea anterior
JavaScript en el navegador6/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

Comprobar la propiedad isAvailable

El ciclo funciona y recorre correctamente la colección de elementos DOM. Sigamos con el programa.

Supondremos que el arreglo de datos de los productos y la colección de elementos DOM siempre tienen la misma longitud y que los productos aparecen en el mismo orden. Así podremos recorrer ambas estructuras en un solo ciclo. Crearemos una variable product para guardar el producto actual. Ese producto corresponderá al elemento DOM actual, que ya guardamos en element.

Para mostrar la disponibilidad del producto, agregaremos distintas clases al elemento DOM. Lo haremos en varios pasos:

  • Crearemos una variable para guardar la clase de disponibilidad. Supondremos que el producto está disponible, así que su valor inicial será product--available.
  • Comprobaremos la propiedad isAvailable del producto. Si es false, es decir, si el producto está agotado, cambiaremos el valor de la variable a product--unavailable.
  • Con classList.add(), agregaremos al elemento DOM la clase guardada en la variable.

En el capítulo «Condiciones» vimos que los valores booleanos pueden usarse directamente como condiciones. Por eso podríamos escribir una comprobación así:

var value = true;

if (value) {
  // Este código se ejecutará
}

En nuestro caso, la condición debe cumplirse cuando isAvailable sea false. Necesitamos usar la negación:

var value = false;

if (!value) {
  // Este código se ejecutará
}
  • 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--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; } .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; }
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'); for (var i = 0; i < elements.length; i++) { var element = elements[i]; console.log(element); element.classList.add('product--available'); } }; 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
    1. Después de mostrar element en la consola, crea la variable product con el elemento actual del arreglo products y muéstrala también en la consola.
    2. Después de mostrar product, crea la variable availabilityClass con el valor 'product--available'.
    3. Después de esta variable, agrega una condición que compruebe si el producto está agotado.
    4. Si se cumple la condición, cambia el valor de availabilityClass a 'product--unavailable'.
    5. En la llamada a classList.add() del elemento DOM actual, reemplaza la cadena 'product--available' por la variable availabilityClass.
    Codigo Heroe

    © 2023-2026, codigoheroe.com