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

El método querySelector: buscar un elemento

Cupcake llegó a la oficina y fue a verte de inmediato. El Jefe quiere hacer unos cambios en la página: destacar el destornillador «Barrenita» como producto del día y marcar el martillo «Mjölnir» como no disponible para pedidos.

¿Para qué usar JavaScript si podemos cambiar el HTML o los estilos? Porque no tenemos acceso a ninguno de los dos. Así lo decidió el dueño de la tienda. Solo podemos cambiar la página mediante scripts.

JavaScript trabaja con los elementos del HTML como objetos, no como las cadenas que escribimos en los archivos HTML. Cada objeto está relacionado con otros: tiene un elemento padre, elementos vecinos y elementos anidados. Juntos forman una estructura de árbol llamada DOM (Document Object Model, o modelo de objetos del documento).

En la raíz de este árbol está el objeto document. Desde él podemos acceder a los demás objetos. Este objeto global está disponible en los programas que se ejecutan en el navegador. En pocas palabras, document representa la página que contiene todos los elementos del HTML.

Con document podemos encontrar cualquier elemento de la página y después modificarlo. Para ello, el objeto tiene métodos especiales de búsqueda.

Uno de los más flexibles es querySelector. Recibe un selector CSS y devuelve el primer elemento que coincide con él. Admite cualquier selector CSS y se usa así:

// Buscar un elemento por su etiqueta
var list = document.querySelector('ul');

// Buscar el último elemento de una lista
var lastProduct = document.querySelector('li:last-child');

// Buscar un elemento por su clase
var price = document.querySelector('.price');

// Buscar el tercer elemento de la lista de productos
var thirdProduct = document.querySelector('.product:nth-child(3)');

En este capítulo declararemos las variables con var, como en los ejemplos.

Veamos la página de la tienda. Cada producto es un elemento li con la clase product. El destornillador «Barrenita», que debe convertirse en el producto del día, ocupa el segundo lugar en el HTML. Podemos encontrarlo con el selector .product:nth-child(2). El martillo «Mjölnir», que está agotado, es el último. Podemos encontrarlo con .product:last-child.

Hay muchos selectores CSS y varias formas de encontrar un mismo elemento. Puedes conocerlos o repasar cómo funcionan en estos capítulos:

  • Selectores de CSS: tipos y combinaciones.
  • Selectores estructurales y pseudoelementos.
  • Selectores de atributos y estados de formularios.

Busquemos el segundo y el último elemento DOM de la lista de productos y mostrémoslos en la consola para comprobar que la búsqueda 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

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. Declara la variable specialProduct y guarda en ella el segundo elemento DOM de la lista de productos.
    2. Muestra specialProduct en la consola.
    3. Debajo, crea la variable unavailableProduct y guarda en ella el último elemento DOM de la lista de productos.
    4. Muestra unavailableProduct en la consola.
    Codigo Heroe

    © 2023-2026, codigoheroe.com