DOM con JavaScriptEl DOM (Document Object Model) es una interfaz de programación que representa la estructura de un documento HTML o XML en forma de árbol. Permite a JavaScript acceder, manipular y modificar el contenido y estructura de una página web de forma dinámica.
Si tenemos un HTML básico:
El navegador lo convierte en un árbol DOM similar a este:
html
head
title: “Mi Página Web”body
h1: “Bienvenidos”p: “Este es un párrafo de ejemplo.”Para manipular un elemento, primero necesitamos seleccionarlo en JavaScript.
document.getElementById(): Selecciona un elemento por su atributo id.document.querySelector(): Selecciona el primer elemento que coincide con un selector CSS.document.querySelectorAll(): Selecciona todos los elementos que coinciden con el selector CSS y devuelve una NodeList.// Ejemplos de selección
const titulo = document.getElementById('titulo'); // Selección por id
const primerParrafo = document.querySelector('p'); // Selección por etiqueta
const items = document.querySelectorAll('.item'); // Selección por clase > Nota: querySelectorAll devuelve una lista de nodos, lo que significa que podemos iterar sobre los elementos seleccionados.
Una vez seleccionado un elemento, se puede modificar su contenido de diversas formas:
innerText: Cambia solo el texto del elemento.innerHTML: Cambia el HTML interno, lo que permite añadir etiquetas HTML.// Modificación de contenido
titulo.innerText = 'Nuevo Título';
primerParrafo.innerHTML = 'Este es el <strong>nuevo contenido</strong>';Nota:
innerHTMLpermite insertar código HTML, pero úsalo con precaución para evitar inyecciones de código.
JavaScript permite crear y eliminar elementos en el DOM:
document.createElement(): Crea un nuevo elemento HTML.appendChild(): Añade un elemento como hijo de otro.removeChild(): Elimina un elemento hijo.Los eventos son interacciones que pueden ocurrir en la página web, como click, mouseover, o submit. Podemos asociar estos eventos a funciones que se ejecutarán en respuesta.
clickconst boton = document.getElementById('miBoton');
boton.addEventListener('click', function() {
alert('¡Botón presionado!');
});Consejo:
addEventListenerpermite añadir múltiples eventos sin sobrescribir otros eventos previamente definidos.
Algunas propiedades que facilitan la manipulación del DOM:
nodeType: Tipo de nodo (1 para elementos, 3 para texto).nodeName: Nombre del nodo.parentNode: Nodo padre.childNodes: Lista de nodos hijos.style: Permite modificar estilos CSS en línea.<ul>) vacía y un botón de “Añadir tarea”.<li> a la lista cada vez que se haga clic en el botón.// Variables
const lista = document.getElementById('listaTareas');
const boton = document.getElementById('addTarea');
// Función para añadir tareas
boton.addEventListener('click', () => {
const tarea = document.createElement('li');
tarea.innerText = 'Nueva Tarea';
lista.appendChild(tarea);
// Alternar color al hacer clic
tarea.addEventListener('click', () => {
tarea.style.color = tarea.style.color === 'blue' ? 'black' : 'blue';
});
});Desarrollo WEB - Document Object Model - Otras Presentaciones