Manipular elementos del DOM con métodos de JavaScript

JavaScriptJavaScriptBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, los participantes explorarán las poderosas técnicas de manipulación de elementos del DOM utilizando métodos de JavaScript. El tutorial completo guía a los aprendices a través de la creación de una estructura de documento HTML, la selección de elementos por ID, la generación y agregación dinámica de nuevos elementos, la modificación de estilos utilizando selectores de clase y la implementación de desafíos de generación de elementos interactivos.

Los participantes adquirirán experiencia práctica con las técnicas esenciales de manipulación del DOM de JavaScript, incluyendo métodos como document.getElementById(), modificaciones de la propiedad .style, creación de elementos con document.createElement() y gestión de contenido dinámico. Siguiendo instrucciones paso a paso, los aprendices desarrollarán habilidades prácticas en la transformación del contenido y la interactividad de la página web utilizando los métodos principales del DOM de JavaScript.

Establece la estructura del documento HTML

En este paso, aprenderás a crear una estructura básica de documento HTML que servirá como base para nuestro laboratorio de manipulación del DOM de JavaScript. Creamos un archivo HTML simple con los elementos esenciales con los que interactuaremos utilizando JavaScript.

Abre el WebIDE y navega hasta el directorio ~/project. Crea un nuevo archivo llamado index.html haciendo clic derecho en el explorador de archivos y seleccionando "Nuevo archivo".

Aquí está la estructura básica de HTML que crearás:

<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>DOM Manipulation Lab</title>
  </head>
  <body>
    <div id="container">
      <h1 id="main-title">Welcome to DOM Manipulation</h1>
      <p class="description">
        This is a practice page for JavaScript DOM methods.
      </p>
      <div id="dynamic-content"></div>
    </div>

    <script src="script.js"></script>
  </body>
</html>

Analicemos los componentes principales:

  • <!DOCTYPE html> declara que este es un documento HTML5
  • Hemos incluido un id para el contenedor principal y los elementos clave
  • Añadimos una class al párrafo
  • Creamos un div vacío con id="dynamic-content" para su manipulación posterior
  • Vinculamos un archivo JavaScript externo script.js

Salida de ejemplo cuando abres este archivo HTML en un navegador:

Welcome to DOM Manipulation
This is a practice page for JavaScript DOM methods.

Ahora, crea el archivo JavaScript correspondiente script.js en el mismo directorio:

// Initial JavaScript file for DOM manipulation
console.log("HTML document is ready for DOM manipulation");

Selecciona elementos por ID y modifica los estilos

En este paso, aprenderás a seleccionar elementos HTML por su ID y a modificarlos estilos utilizando JavaScript. Abre el archivo script.js en el WebIDE que creaste en el paso anterior.

Usaremos el método document.getElementById() para seleccionar elementos y la propiedad .style para modificar su apariencia. Actualiza tu script.js con el siguiente código:

// Select elements by ID
const mainTitle = document.getElementById("main-title");
const container = document.getElementById("container");

// Modify styles directly
mainTitle.style.color = "blue";
mainTitle.style.fontSize = "24px";
mainTitle.style.textAlign = "center";

// Modify container styles
container.style.backgroundColor = "#f0f0f0";
container.style.padding = "20px";
container.style.borderRadius = "10px";

Analicemos lo que hace este código:

  • document.getElementById() encuentra un elemento con un ID específico
  • La propiedad .style permite modificaciones de estilo directas
  • Cambiamos el color, el tamaño de fuente y la alineación del título principal
  • Le agregamos color de fondo, relleno y radio de borde al contenedor

Salida de ejemplo en el navegador:

  • El título principal será azul, centrado y más grande
  • El contenedor tendrá un fondo gris claro con bordes redondeados

Para ver los cambios, abre el archivo index.html en un navegador o utiliza la vista previa del navegador en el WebIDE.

Crea y agrega nuevos elementos dinámicamente

En este paso, aprenderás a crear nuevos elementos HTML dinámicamente utilizando JavaScript y a agregarlos al documento existente. Abre el archivo script.js en el WebIDE y agrega el siguiente código:

// Select the dynamic content container
const dynamicContent = document.getElementById("dynamic-content");

// Create new elements
const newParagraph = document.createElement("p");
const newButton = document.createElement("button");

// Set content and attributes
newParagraph.textContent = "This paragraph was created dynamically!";
newParagraph.style.color = "green";

newButton.textContent = "Click Me";
newButton.style.backgroundColor = "lightblue";
newButton.style.padding = "10px";

// Append elements to the dynamic content container
dynamicContent.appendChild(newParagraph);
dynamicContent.appendChild(newButton);

// Add an event listener to the button
newButton.addEventListener("click", () => {
  alert("Dynamic button was clicked!");
});

Analicemos los métodos principales:

  • document.createElement() crea un nuevo elemento HTML
  • .textContent establece el texto de un elemento
  • .appendChild() agrega el nuevo elemento al DOM
  • .addEventListener() agrega interactividad al elemento

Salida de ejemplo en el navegador:

  • Un párrafo verde con el texto "This paragraph was created dynamically!"
  • Un botón azul claro que dice "Click Me"
  • Hacer clic en el botón mostrará una alerta

Cuando abres el archivo index.html, verás los nuevos elementos creados agregados a la página.

Modifica elementos utilizando selectores de clase

En este paso, aprenderás a seleccionar y modificar elementos utilizando selectores de clase en JavaScript. Actualiza tu index.html para incluir múltiples elementos con la misma clase:

<div id="container">
  <h1 id="main-title">Welcome to DOM Manipulation</h1>
  <p class="description">First description paragraph</p>
  <p class="description">Second description paragraph</p>
  <div id="dynamic-content"></div>
</div>

Ahora, modifica tu script.js para trabajar con selectores de clase:

// Select all elements with the 'description' class
const descriptionElements = document.getElementsByClassName("description");

// Loop through the elements and modify their styles
for (let element of descriptionElements) {
  element.style.fontStyle = "italic";
  element.style.color = "darkgreen";
  element.style.backgroundColor = "#f0f0f0";
  element.style.padding = "10px";
  element.style.margin = "5px 0";
}

// Alternative method using querySelector
const firstDescription = document.querySelector(".description");
firstDescription.textContent = "Modified first description using querySelector";

Métodos principales demostrados:

  • document.getElementsByClassName() devuelve una colección de elementos
  • document.querySelector() selecciona el primer elemento que coincide
  • Utilizar un bucle for...of para iterar a través de los elementos
  • Modificar los estilos de múltiples elementos simultáneamente

Salida de ejemplo en el navegador:

  • Dos párrafos con texto en cursiva y verde oscuro
  • Fondo gris claro para los párrafos de descripción
  • Texto de la primera descripción modificado

Cuando abres el archivo index.html, verás los párrafos de descripción con estilo y modificados.

Implementa el desafío de generación de elementos interactivos

En este último paso, crearás un desafío interactivo que permite a los usuarios generar elementos dinámicamente. Actualiza tu index.html para incluir un campo de entrada y un botón:

<div id="container">
  <h2>Dynamic Element Generator</h2>
  <input type="text" id="elementInput" placeholder="Enter element text" />
  <select id="elementType">
    <option value="p">Paragraph</option>
    <option value="h3">Heading</option>
    <option value="div">Div</option>
  </select>
  <button id="generateButton">Generate Element</button>
  <div id="output-container"></div>
</div>

Ahora, actualiza tu script.js con la lógica de generación de elementos interactivos:

// Select key elements
const elementInput = document.getElementById("elementInput");
const elementTypeSelect = document.getElementById("elementType");
const generateButton = document.getElementById("generateButton");
const outputContainer = document.getElementById("output-container");

// Element generation function
function generateElement() {
  // Get input values
  const text = elementInput.value;
  const type = elementTypeSelect.value;

  // Check if input is not empty
  if (text.trim() === "") {
    alert("Please enter some text");
    return;
  }

  // Create new element
  const newElement = document.createElement(type);
  newElement.textContent = text;

  // Style the new element
  newElement.style.margin = "10px 0";
  newElement.style.padding = "10px";
  newElement.style.backgroundColor = getRandomColor();

  // Add a remove button to each generated element
  const removeButton = document.createElement("button");
  removeButton.textContent = "Remove";
  removeButton.style.marginLeft = "10px";
  removeButton.addEventListener("click", () => {
    outputContainer.removeChild(newElement);
  });

  // Append element and remove button
  newElement.appendChild(removeButton);
  outputContainer.appendChild(newElement);

  // Clear input
  elementInput.value = "";
}

// Helper function to generate random color
function getRandomColor() {
  const letters = "0123456789ABCDEF";
  let color = "#";
  for (let i = 0; i < 6; i++) {
    color += letters[Math.floor(Math.random() * 16)];
  }
  return color;
}

// Add event listener to generate button
generateButton.addEventListener("click", generateElement);

Características principales de este desafío interactivo:

  • Creación dinámica de elementos basada en la entrada del usuario
  • Capacidad de elegir el tipo de elemento
  • Color de fondo aleatorio para cada elemento
  • Opción para eliminar elementos individuales
  • Validación de entrada

Interacción de ejemplo:

  1. Escribe "Hello World" en el campo de entrada
  2. Selecciona el tipo de elemento (por ejemplo, Párrafo)
  3. Haz clic en "Generate Element"
  4. Aparece un nuevo párrafo con un color de fondo aleatorio
  5. Haz clic en "Remove" para eliminar el elemento

Resumen

En este laboratorio, los participantes aprenden técnicas fundamentales de manipulación del DOM de JavaScript a través de un enfoque práctico estructurado. El laboratorio comienza estableciendo una estructura básica de documento HTML con la colocación estratégica de elementos, incluyendo IDs y clases únicas que faciliten la interacción con JavaScript. Los participantes crean un archivo HTML inicial y el correspondiente archivo JavaScript, estableciendo las bases para la manipulación dinámica de páginas web.

El laboratorio guía progresivamente a los aprendices a través de los métodos esenciales del DOM, incluyendo la selección de elementos por ID, la modificación dinámica de estilos, la creación y adición de nuevos elementos y la implementación de la generación de elementos interactivos. Al trabajar en estos retos prácticos, los participantes adquieren habilidad en el acceso directo y la transformación de elementos de página web utilizando JavaScript, desarrollando habilidades esenciales para la creación de aplicaciones web responsivas e interactivas.