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

La propiedad textContent: contenido de texto

La tarjeta ya está en la página, pero todavía está vacía. Empecemos a llenarla con contenido: el nombre del producto y su precio.

El algoritmo es casi el mismo que usamos para la tarjeta: crear un elemento, agregarle una clase, insertar el texto (el nombre o el precio del producto) y agregar el elemento al final de la tarjeta. Ya conocemos todos los pasos salvo el de agregar texto. ¿Cómo se hace?

Los elementos DOM tienen la propiedad textContent, que contiene su contenido de texto. Incluye el texto de los elementos anidados, sin las etiquetas HTML.

// HTML
<p>Soy un <em>elemento de texto</em>.</p>

// JS
var p = document.querySelector('p');
console.log(p.textContent);
// Mostrará: Soy un elemento de texto.

Esta propiedad se puede leer, pero también modificar. Para darle texto a un elemento, basta con asignar el valor deseado a su propiedad textContent.

p.textContent = 'Ahora tengo contenido nuevo.';
console.log(p.textContent);
// Mostrará: Ahora tengo contenido nuevo.

// El contenido del elemento cambiará en el DOM
<p>Ahora tengo contenido nuevo.</p>

Agreguemos el nombre y el precio a la tarjeta. Comprobaremos que los nuevos elementos aparecen en la página.

  • index.html
  • style.css
  • script.js
HTML
<!DOCTYPE html> <html lang="es"> <head> <meta charset="utf-8"> <title>Catálogo | Device</title> <link rel="stylesheet" href="device/setting.css"> <link rel="stylesheet" href="style.css"> </head> <body> <ul class="products"> <li class="product product--available"> <h2 class="product__title">Palo para selfies para principiantes</h2> <img class="product__image" src="device/item-1.jpg" alt="Palo para selfies para principiantes"> <p class="product__price">200</p> </li> <li class="product product--unavailable"> <h2 class="product__title">Palo para selfies profesional</h2> <img class="product__image" src="device/item-2.jpg" alt="Palo para selfies profesional"> <p class="product__price">1500</p> </li> <li class="product product--available"> <h2 class="product__title">Palo para selfies insumergible</h2> <img class="product__image" src="device/item-3.jpg" alt="Palo para selfies insumergible"> <p class="product__price">2500</p> </li> </ul> <script src="script.js"></script> </body> </html>
CSS
.products { display: flex; flex-wrap: wrap; justify-content: space-between; width: 570px; margin: 20px auto; padding: 0; list-style: none; } .product { position: relative; display: flex; flex-wrap: wrap; justify-content: space-between; width: 270px; margin-bottom: 30px; } .product:empty { background-color: rgb(225, 225, 239); } .product__image { order: -1; width: 270px; height: 380px; margin-bottom: 15px; } .product__title { max-width: 180px; margin: 0; font-weight: 700; font-size: 18px; line-height: 24px; } .product__price { max-width: 80px; margin: 0; text-align: right; font-weight: 300; font-size: 16px; font-variant-numeric: lining-nums; line-height: 27px; } .product--special { order: -1; width: 100%; height: 380px; flex-direction: column; justify-content: flex-start; align-content: space-between; } .product--special .product__title { width: 270px; max-width: 100%; margin-bottom: 10px; font-size: 28px; line-height: 36px; } .product--special .product__price { width: 270px; max-width: 100%; text-align: left; text-decoration: line-through; color: #cccccc; } .product--special .product__special-price { margin: 0; } .product--special .product__image { outline: 3px solid #ffc600; } .product--special::before { content: "Producto del día"; position: absolute; top: 0; left: 0; display: flex; justify-content: center; align-items: center; padding: 5px 10px; font-weight: 500; color: #111111; text-transform: uppercase; background-color: #ffc600; } .product--available::after, .product--unavailable::after { position: absolute; top: 343px; left: 50%; padding: 10px 5px 2px 5px; border-bottom: 1px solid #57c74b; transform: translateX(-50%); } .product--available::after { content: "Disponible"; } .product--unavailable { filter: grayscale(1) opacity(0.7); } .product--unavailable::after { content: "Agotado"; } .product--special.product--available::after, .product--special.product--unavailable::after { left: 135px; }
JavaScript
var cardList = document.querySelector('.products'); console.log(cardList.children); var listItem = document.createElement('li'); listItem.classList.add('product'); cardList.appendChild(listItem); console.log(cardList.children);

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. Al final del programa, crea el título h2 de la tarjeta de producto y guárdalo en la variable title.
    2. Agrega la clase product__title al título.
    3. Asigna el texto 'Palo para selfies profesional' al título mediante textContent.
    4. Agrega el elemento DOM title al final del elemento DOM listItem.
    5. De la misma forma, después del título, crea un elemento DOM p con la clase product__price y el texto '1000'. Guárdalo en la variable price y agrégalo al final de listItem.
    Codigo Heroe

    © 2023-2026, codigoheroe.com