3_Manipulación del DOM con JavaScript
3_Manipulación del DOM con JavaScript
Introducción
La Manipulación del DOM (Document Object Model) con JavaScript es un componente fundamental
en el desarrollo web interactivo y dinámico. El DOM actúa como una representación estructurada de
la página web, permitiendo a los desarrolladores acceder, modificar y crear contenido de manera
programática. En esta unidad didáctica, se explorarán los aspectos clave relacionados con la
manipulación del DOM, desde la comprensión de qué es el DOM hasta la aplicación práctica de la
om
Esta unidad proporcionará una base sólida en la manipulación del DOM con JavaScript, habilitando a
.c
los desarrolladores para crear aplicaciones web más dinámicas e interactivas.
s
ro
ha
l ap
au
a.
os
m
ce
cemosa.aulapharos.com
1 / 23
[AFO028L7M] Curso de Analista Programador Javascript
[MOD024H2Y] Analista Programador Javascript
[UDI152LMN] Manipulación del DOM con JavaScript
Objetivos
Familiarizarse con el Document Object Model (DOM) como una representación estructurada de
Aprender a seleccionar elementos del DOM de manera efectiva mediante métodos como
om
querySelectorAll, permitiendo la ubicación precisa de elementos en la página.
s .c
ro
ha
l ap
au
a.
os
m
ce
cemosa.aulapharos.com
2 / 23
[AFO028L7M] Curso de Analista Programador Javascript
[MOD024H2Y] Analista Programador Javascript
[UDI152LMN] Manipulación del DOM con JavaScript
Mapa Conceptual
om
.c
s
ro
ha
l ap
au
a.
os
m
ce
cemosa.aulapharos.com
3 / 23
[AFO028L7M] Curso de Analista Programador Javascript
[MOD024H2Y] Analista Programador Javascript
[UDI152LMN] Manipulación del DOM con JavaScript
1. ¿Qué es el DOM?
En el inicio del desarrollo web, la práctica común es aprender a redactar el marcado HTML y
agregar estilos CSS para otorgar color, forma y cierta interactividad a las páginas. Sin embargo, al
Limitándose HTML/CSS, solo se pueden crear páginas estáticas, es decir, páginas que no pueden
adaptarse según las acciones del usuario. La incorporación de JavaScript posibilita la creación de
om
páginas dinámicas, aprovechando la potencia y flexibilidad que brinda un lenguaje de programación
para generar documentos y páginas más complejas. Esto conduce a una experiencia más completa y
.c
permite la automatización de una amplia gama de tareas y acciones.
s
El término "DOM" hace referencia al Modelo de Objetos del Documento, es decir, la estructura del
ro
documento HTML. Una página HTML se compone de múltiples etiquetas HTML anidadas una dentro
ha
de otra, formando un árbol de etiquetas relacionadas entre sí, denominado árbol DOM (o
simplemente DOM).
ap
permite acceder y modificar los elementos del HTML desde JavaScript. Esto implica agregar nuevas
au
etiquetas, modificar o eliminar existentes, cambiar atributos HTML, añadir clases, alterar el
a.
contenido de texto, entre otras acciones. Al estar controlado por un lenguaje de programación, todas
estas tareas pueden automatizarse, incluso programándolas para ejecutarse en respuesta a acciones
os
específicas del usuario, como pulsar un botón, mover el ratón, hacer clic en una parte específica del
m
Document.
Librerías de terceros.
1.1. Document
cemosa.aulapharos.com
4 / 23
[AFO028L7M] Curso de Analista Programador Javascript
[MOD024H2Y] Analista Programador Javascript
[UDI152LMN] Manipulación del DOM con JavaScript
árbol DOM de la página o, de manera más específica, la página de la pestaña del navegador en la
que se encuentra. Dentro de este objeto, pueden existir diversos tipos de elementos, siendo
om
"HTMLDivElement" para la etiqueta <div>, que es un elemento de división en bloque.
.c
"HTMLImageElement" para la etiqueta <img>, que representa una imagen.
s
"HTMLAudioElement" para la etiqueta <audio>, que es un contenedor de audio.
ro
ha
Cada elemento HTML, dependiendo de su tipo, tendrá un tipo de dato específico. A continuación, se
Etiqueta: <div>
Etiqueta: <span>
cemosa.aulapharos.com
5 / 23
[AFO028L7M] Curso de Analista Programador Javascript
[MOD024H2Y] Analista Programador Javascript
[UDI152LMN] Manipulación del DOM con JavaScript
Etiqueta: <img>
Descripción: Imagen.
om
Más información: Elemento <img>
s .c
Tipo de dato genérico: "HTMLElement"
Etiqueta: <audio>
l
Es importante señalar que existen muchos tipos de datos específicos, uno por cada etiqueta HTML.
m
Crear etiquetas: métodos y consejos para crear elementos en el DOM y trabajar con ellos.
Gestionar atributos: formas de gestionar y modificar atributos HTML de elementos del DOM.
Gestión de CSS: uso de la API .classList para manipular clases CSS desde JavaScript.
cemosa.aulapharos.com
6 / 23
[AFO028L7M] Curso de Analista Programador Javascript
[MOD024H2Y] Analista Programador Javascript
[UDI152LMN] Manipulación del DOM con JavaScript
Contenido etiquetas: acceder y modificar el contenido de una etiqueta HTML del DOM.
Navegar por etiquetas: métodos para «navegar» a través de la jerarquía del DOM.
Animar elementos del DOM: aplicar animaciones CSS a elementos del DOM desde JavaScript
con animate().
om
En situaciones donde el rendimiento no es crítico y se busca una programación más rápida, se
.c
pueden utilizar librerías de terceros que simplifican el trabajo con el DOM. Algunas opciones
s
incluyen:
ro
RE:DOM: librería para crear interfaces de usuario basada en DOM. [@redom/redom](GitHub
ha
Link)
ap
D3js: librería para la creación de gráficas, datos y grafos que puede manipular el DOM.
[@d3/d3](GitHub Link)
l
Si no se desea trabajar directamente con el DOM, es común optar por un framework JavaScript.
Muchos de ellos utilizan un Virtual DOM para automatizar la manipulación sin que el programador
os
tenga que hacerlo a bajo nivel. Librerías como React, Vue o Angular son populares por esta razón.
m
Es importante señalar que, aunque los frameworks JavaScript no trabajen directamente con el DOM,
ce
no implica que acceder al DOM sea una práctica desaconsejada. Cada framework tiene sus propias
normas y estrategias, pero se aconseja que el programador tenga conocimientos de manipulación del
cemosa.aulapharos.com
7 / 23
[AFO028L7M] Curso de Analista Programador Javascript
[MOD024H2Y] Analista Programador Javascript
[UDI152LMN] Manipulación del DOM con JavaScript
HTML, el primer paso consiste en buscar dicho elemento. Para llevar a cabo esta tarea, comúnmente
se intenta identificar el elemento a través de alguno de sus atributos más utilizados, como el id o
class.
Existen métodos específicos que permiten realizar búsquedas en el DOM de la página y localizar los
om
elementos deseados. El primer grupo de métodos corresponde a enfoques más antiguos y
tradicionales, mientras que el segundo grupo involucra métodos más modernos que requieren el
.c
conocimiento de selectores CSS.
s
A continuación, se verá cómo seleccionar elementos con
ro
ha
Métodos tradicionales.
Métodos modernos.
l ap
Los métodos más clásicos y tradicionales para la búsqueda de elementos en el DOM son más
a.
emplear el método getElementById(). En caso contrario, se pueden utilizar otros tres métodos, los
m
getElementById()
cemosa.aulapharos.com
8 / 23
[AFO028L7M] Curso de Analista Programador Javascript
[MOD024H2Y] Analista Programador Javascript
[UDI152LMN] Manipulación del DOM con JavaScript
documento HTML bien estructurado no debería contener más de un elemento con el mismo id, por lo
getElement
om
En caso de no encontrar el elemento especificado, el método devuelve Null.
.c
getElementsByClassName()
s
Por otro lado, el métodogetElementsByClassName(class) permite buscar elementos que posean la
ro
clase especificada en class. Es relevante notar que el término "getElements" está en plural, lo que
ha
implica que puede devolver varias clases, ya que, a diferencia de los id, pueden existir varios
GetClass
m
Estos métodos devuelven siempre un con todos los elementos encontrados que cumplen con el
ce
similar, con la diferencia de que buscan elementos por su atributo name o por su etiqueta HTML,
(plural) para no confundir cuándo se devuelve un solo elemento y cuándo se devuelve una lista de
ellos.
cemosa.aulapharos.com
9 / 23
[AFO028L7M] Curso de Analista Programador Javascript
[MOD024H2Y] Analista Programador Javascript
[UDI152LMN] Manipulación del DOM con JavaScript
A pesar de que los métodos tradicionales previamente mencionados son suficientes para la búsqueda
de elementos, actualmente se cuenta con dos métodos más avanzados que resultan más cómodos y
querySelector(sel) busca el primer elemento que coincide con el selector CSS sel. En cambio
om
SelectorAll() devuelve todos.
.c
Con estos dos métodos, es posible realizar todas las acciones que se llevaban a cabo con los métodos
tradicionales mencionados anteriormente y, además, ejecutar muchas más tareas con menos código.
s
ro
Esto se debe a la flexibilidad y potencia que ofrecen gracias a los selectores CSS.
ha
querySelector()
El método querySelector() devuelve el primer elemento que concuerda con el selector CSS
ap
Selector
ce
Este método resulta interesante porque permite suministrarle tanto un selector CSS básico como
uno avanzado, lo cual lo convierte en un sistema más potente. El primer ejemplo sería equivalente a
En el segundo ejemplo, se está recuperando el primer elemento con la clase "info" que se encuentra
dentro de otro elemento con la clase "main". En los métodos tradicionales, este proceso sería menos
directo y requeriría varias llamadas, mientras que con.querySelector() se realiza directamente con
cemosa.aulapharos.com
10 / 23
[AFO028L7M] Curso de Analista Programador Javascript
[MOD024H2Y] Analista Programador Javascript
[UDI152LMN] Manipulación del DOM con JavaScript
una.
querySelectorAll()
Por otro lado, el método querySelectorAll() realiza una búsqueda de elementos en el DOM, pero,
como se puede inferir por el "All", devuelve un con todos los elementos que coinciden con el selector
CSS.
om
.c
s
ro
ha
SelectorAll
ap
cemosa.aulapharos.com
11 / 23
[AFO028L7M] Curso de Analista Programador Javascript
[MOD024H2Y] Analista Programador Javascript
[UDI152LMN] Manipulación del DOM con JavaScript
La manipulación de elementos del DOM (Document Object Model) es una parte esencial de la
programación web con JavaScript. El DOM es una interfaz de programación que representa la
estructura de un documento HTML o XML como un árbol de objetos, donde cada elemento del
documento es un nodo en ese árbol. Se puede manipular estos nodos para cambiar dinámicamente el
om
Aquí hay algunas operaciones comunes para la manipulación de elementos del DOM con JavaScript:
.c
Para manipular un elemento, es necesario obtener una referencia a él. Esto se puede lograr
s
ro
o querySelector. ha
l ap
au
a.
os
m
ce
Manipular elementos
innerHTML o textContent.
cemosa.aulapharos.com
12 / 23
[AFO028L7M] Curso de Analista Programador Javascript
[MOD024H2Y] Analista Programador Javascript
[UDI152LMN] Manipulación del DOM con JavaScript
Cambiar contenido
om
Los atributos de un elemento pueden ser accedidos y modificados.
s.c
ro
ha
ap
Atributos
l
Style
cemosa.aulapharos.com
13 / 23
[AFO028L7M] Curso de Analista Programador Javascript
[MOD024H2Y] Analista Programador Javascript
[UDI152LMN] Manipulación del DOM con JavaScript
Agregar elementos
om
.c
s
ro
ha
l ap
au
a.
os
m
ce
cemosa.aulapharos.com
14 / 23
[AFO028L7M] Curso de Analista Programador Javascript
[MOD024H2Y] Analista Programador Javascript
[UDI152LMN] Manipulación del DOM con JavaScript
En la etapa de aprendizaje, es común generar código HTML desde un archivo HTML. No obstante,
con el crecimiento de las páginas SPA (Single Page Application) y la utilización de frameworks o
bibliotecas en JavaScript, esta práctica ha evolucionado, y ahora es bastante común crear código
Esta metodología presenta sus propias ventajas y desventajas. Un archivo .html siempre resulta más
om
simple, más estático y directo, ya que los navegadores web analizan primero un archivo de marcado
HTML. Por otro lado, un archivo .js es más complejo y menos directo, pero ofrece mayor potencia,
.c
dinamismo y flexibilidad, con menos limitaciones durante el desarrollo.
s
Existen varios métodos que permiten crear eficientemente diversos elementos HTML o nodos,
ro
facilitando la creación de estructuras dinámicas mediante bucles o estructuras definidas. Aquí se
ha
describen algunos de estos métodos:
Métodos Descripción
ap
4.1. createElement()
memoria (sin que esté insertado aún en el documento HTML). Al almacenar dicho elemento en una
Posteriormente, se puede insertar en una posición específica del DOM o documento HTML.
cemosa.aulapharos.com
15 / 23
[AFO028L7M] Curso de Analista Programador Javascript
[MOD024H2Y] Analista Programador Javascript
[UDI152LMN] Manipulación del DOM con JavaScript
om
Esquema de lenguajejs.com
.c
s
El enfoque se centrará en el proceso de creación del elemento, dejando para más adelante la
ro
exploración de diversas formas de insertarlo en el DOM. La operativa de.createElement() es
bastante directa: simplemente se le pasa el nombre de la etiqueta (tag) que se desea utilizar.
ha
l ap
au
a.
Esquema de lenguajejs.com
os
En casos menos comunes, se podría emplear createComment() para generar comentarios HTML o
.createTextNode() para crear fragmentos de texto sin una etiqueta HTML. En ambos casos, se recibe
m
Cabe mencionar que el método createElement() dispone de un parámetro opcional llamado options.
Si se proporciona, se espera un objeto con una propiedad "is" para definir un elemento
personalizado en una modalidad menos utilizada. Se abordará este aspecto más adelante en la
cemosa.aulapharos.com
16 / 23
[AFO028L7M] Curso de Analista Programador Javascript
[MOD024H2Y] Analista Programador Javascript
[UDI152LMN] Manipulación del DOM con JavaScript
4.2. cloneNode()
Al crear y duplicar elementos HTML, es crucial tener precaución. Un error común que suele ocurrir,
variable bajo la creencia de que se está creando una copia, cuando en realidad se está creando una
om
referencia. Aunque esto puede parecer que duplica un elemento para recrearlo de manera idéntica
al original, en realidad, se establece una referencia al elemento original. Esto se realiza por motivos
de rendimiento y eficiencia:
s .c
ro
ha
l ap
Para evitar la creación de una referencia y lograr duplicar el elemento, lo cual es el objetivo real, se
a.
El método cloneNode(deep) cuenta con un parámetro opcional deep, que por defecto es false. Este
Si es true, realizará una clonación profunda, copiando también los elementos hijos.
cemosa.aulapharos.com
17 / 23
[AFO028L7M] Curso de Analista Programador Javascript
[MOD024H2Y] Analista Programador Javascript
[UDI152LMN] Manipulación del DOM con JavaScript
Si es false, realizará una clonación superficial, sin copiar los elementos hijos.
om
s .c
ro
ha
l ap
au
a.
os
m
ce
cemosa.aulapharos.com
18 / 23
[AFO028L7M] Curso de Analista Programador Javascript
[MOD024H2Y] Analista Programador Javascript
[UDI152LMN] Manipulación del DOM con JavaScript
Los eventos del DOM (Modelo de Objetos del Documento) en JavaScript son acciones o sucesos que
ocurren en la página web y que pueden ser detectados y manejados por el código JavaScript. Aquí
om
s.c
ro
Click ha
mouseover y mouseout: se desencadenan cuando el cursor del mouse entra o sale de un
elemento.
l ap
au
a.
os
m
ce
Mouse
keydown y keyup: se desencadenan cuando se presiona o se suelta una tecla del teclado.
cemosa.aulapharos.com
19 / 23
[AFO028L7M] Curso de Analista Programador Javascript
[MOD024H2Y] Analista Programador Javascript
[UDI152LMN] Manipulación del DOM con JavaScript
om
Keydown y keyup
.c
s
submit: se desencadena cuando se envía un formulario.
ro
ha
l ap
au
a.
Submit
os
Change
cemosa.aulapharos.com
20 / 23
[AFO028L7M] Curso de Analista Programador Javascript
[MOD024H2Y] Analista Programador Javascript
[UDI152LMN] Manipulación del DOM con JavaScript
Load
om
s.c
ro
Resize
ha
• Recuerda
• El DOM representa la estructura del documento como un árbol jerárquico de nodos.
ap
• Los fragmentos de documento son nodos del DOM que no están vinculados al árbol principal. Pueden
ser utilizados para realizar manipulaciones eficientes antes de agregar elementos al árbol principal.
• Se puede recorrer el árbol del DOM utilizando bucles y métodos como parentNode, childNodes,
os
cemosa.aulapharos.com
21 / 23
[AFO028L7M] Curso de Analista Programador Javascript
[MOD024H2Y] Analista Programador Javascript
[UDI152LMN] Manipulación del DOM con JavaScript
Autoevaluación
getElementByTag
getElementById;
om
getElementsByTag;
.c
s
ro
¿Cuál es la propiedad que se utiliza para cambiar el contenido HTML de un
elemento en el DOM?
ha
textValue.
l ap
innerHTML.
au
a.
textContent.
os
createElement y appendChild
createElement y appendNode
createNode y appendChild
cemosa.aulapharos.com
22 / 23
[AFO028L7M] Curso de Analista Programador Javascript
[MOD024H2Y] Analista Programador Javascript
[UDI152LMN] Manipulación del DOM con JavaScript
AddEventListener.
HandleEvent.
AddEventListener.
om
¿Cómo se accede al objeto que representa el documento actual en JavaScript?
.c
CurrentDocument.
s
ro
DocumentObject.
ha
document.
l ap
au
a.
os
m
ce
cemosa.aulapharos.com
23 / 23