{}const=>[]async()letfn</>var
DesarrolloJS

Manipulación DOM: cambiar la página dinámicamente

En este artículo analizaremos los conceptos básicos del trabajo con el DOM: cómo encontrar, modificar, crear y eliminar elementos. Los ejemplos prácticos y el código listo para crear una lista de tareas interactiva te ayudarán a dominar rápidamente el material.

К

Kodik

Autor

4 min de lectura

¿Qué es DOM?

Imagina un documento HTML como un árbol genealógico. Cada elemento tiene un padre, puede haber hijos y vecinos. DOM es la forma en que el navegador organiza todos los elementos de la página como objetos JavaScript con los que se puede trabajar.

<!DOCTYPE html>
<html>
  <body>
    <h1>Привет, мир!</h1>
    <p>Это параграф</p>
  </body>
</html>

En este ejemplo, <body> es el padre de <h1> y <p>, y ellos son sus hijos.

🔥 100.000+ estudiantes ya están con nosotros

¿Cansado de leer teoría?
¡Hora de programar!

Kodik — una app donde aprendes a programar con práctica. Mentor IA, lecciones interactivas, proyectos reales.

🤖 IA 24/7
🎓 Certificados
💰 Gratis
🚀 Empezar
Se unieron hoy

Buscar elementos en la página

Antes de cambiar algo, hay que encontrar el elemento. Hay varias maneras de hacerlo:

// Buscar por ID
const header = document.getElementById('main-header');

// Búsqueda por clase (devuelve una colección de elementos)
const buttons = document.getElementsByClassName('btn');

// Buscar por etiqueta
const paragraphs = document.getElementsByTagName('p');

// Métodos modernos (¡los más populares!)
const firstButton = document.querySelector('.btn'); // primer elemento
const allButtons = document.querySelectorAll('.btn'); // todos los elementos

Los métodos querySelector y querySelectorAll son tus mejores amigos. Funcionan con cualquier selector CSS y son muy cómodos.

Cambio de contenido

Ahora que hemos encontrado el elemento, hagamos algo con él:

const title = document.querySelector('h1');

// Cambiar texto
title.textContent = 'New title';

// Editar HTML (puedes insertar etiquetas)
title.innerHTML = 'Title with <span>accent</span>';

Importante: utiliza textContent para el texto normal y innerHTML solo cuando realmente necesites insertar HTML. Es más seguro.

Trabajar con atributos

Los atributos de los elementos también son fáciles de cambiar:

const link = document.querySelector('a');

// Obtener atributo
const href = link.getAttribute('href');

// Establecer atributo
link.setAttribute('href', 'https://example.com');

// Eliminar atributo
link.removeAttribute('target');

// Trabajar con clases
link.classList.add('active');
link.classList.remove('disabled');
link.classList.toggle('highlighted'); // cambiar de clase

Cambio de estilos

Los estilos CSS se pueden cambiar directamente desde JavaScript:

const box = document.querySelector('.box');

// Cambiar un estilo
box.style.backgroundColor = 'blue';
box.style.width = '200px';

// La mejor manera es a través de las clases
box.classList.add('big-box');

Consejo: intenta cambiar los estilos a través de las clases, no directamente. Así es más fácil mantener el código.

Creación de nuevos elementos

Puedes crear elementos desde cero y añadirlos a la página:

// Crear elemento
const newDiv = document.createElement('div');

// Añadir contenido
newDiv.textContent = 'I am a new element!';
newDiv.classList.add('message');

// Añadir a la página
document.body.appendChild(newDiv); // al final del cuerpo

// O insertar en un lugar específico
const container = document.querySelector('.container');
container.appendChild(newDiv);

Eliminación de elementos

Los elementos se pueden eliminar:

const oldElement = document.querySelector('.old');

// Un método moderno
oldElement.remove();

// Método antiguo (funciona en todas partes)
oldElement.parentNode.removeChild(oldElement);


Ejemplo práctico: lista de tareas

Vamos a crear una aplicación sencilla para la lista de tareas. Pruébala tú mismo:

Mis tareas

Aquí está el código que hace que esta aplicación funcione:

const input = document.getElementById('taskInput');
const addBtn = document.getElementById('addBtn');
const taskList = document.getElementById('taskList');

addBtn.addEventListener('click', function() {
    const taskText = input.value.trim();
    
    if (taskText === '') return;

    // Crear un nuevo elemento de lista
    const li = document.createElement('li');
    li.textContent = taskText;

    // Añadimos la posibilidad de marcar una tarea
    li.addEventListener('click', function() {
        li.classList.toggle('completed');
    });

    // Botón de eliminación
    const deleteBtn = document.createElement('button');
    deleteBtn.textContent = 'Delete';
    deleteBtn.className = 'delete-btn';
    deleteBtn.addEventListener('click', function(e) {
        e.stopPropagation(); // para que no funcione el clic en li
        li.remove();
    });

    li.appendChild(deleteBtn);
    taskList.appendChild(li);

    // Borramos el campo de entrada
    input.value = '';
});

// Añadir con Enter
input.addEventListener('keypress', function(e) {
    if (e.key === 'Enter') {
        addBtn.click();
    }
});

Consejos útiles

Almacena en caché los elementos. Si utilizas un elemento varias veces, guárdalo en una variable en lugar de volver a buscarlo.

// Malo
document.querySelector('.box').style.width = '100px';
document.querySelector('.box').style.height = '100px';

// Bien
const box = document.querySelector('.box');
box.style.width = '100px';
box.style.height = '100px';

Utiliza la delegación de eventos. En lugar de añadir controladores a cada elemento, añade uno al elemento principal.

Minimiza el reflujo. Los cambios frecuentes en el DOM pueden ralentizar la página. Agrupa los cambios o usa DocumentFragment.

Comprueba la existencia de elementos antes de trabajar con ellos para evitar errores.

const element = document.querySelector('.maybe-exists');
if (element) {
    element.textContent = 'Found it!';
}

Conclusión

La manipulación de DOM es la base de las páginas web interactivas. Con su ayuda, puedes crear interfaces dinámicas, responder a las acciones del usuario y hacer que los sitios cobren vida. Practica, experimenta con ejemplos y pronto te resultará natural.

Puedes aprender Python y otros idiomas en Codice — tenemos una plataforma de aprendizaje conveniente con tareas prácticas.

Y también tenemos un genial canal de Telegram con una comunidad amistosa donde puedes hacer preguntas, compartir experiencias y crecer junto a personas de ideas afines.
Únete!

🎯Deja de postergar

¿Te gustó el artículo?
¡Hora de practicar!

En Kodik no solo lees — escribes código de inmediato. Teoría + práctica = habilidades reales.

Práctica instantánea
🧠IA explica código
🏆Certificado

Sin registro • Sin tarjeta