Manipular el HTML desde TS
El Document Object Model (DOM)
Sección titulada «El Document Object Model (DOM)»Esta estructura arborescente de un archivo html se llama el DOM (Document Object Model) y puede ser manipulado programáticamente, es decir, existe un API para manipular el DOM y cada uno de sus elementos. El DOM es independiente de la plataforma y del lenguaje de programación(hay un API por cada lenguaje en particular hay uno para JavaScript/TypeScript) para manipular el DOM
Los dos conceptos principales del DOM son Document y Element. El árbol de la figura 1 es un Document y cada nodo es un HTMLElement.
![]() |
|---|
| Figura 1 |
El API DOM nos provee servicios para:
- encontrar un o unos elemento(s) en el documento. Por ejemplo, encontrar el primer elemento que tiene etiqueta
h1. - modificar un elemento. Por ejemplo, cambiar el contenido del primer párrafo (etiqueta
p). - crear nuevos elementos. Por ejemplo, crear un nuevo párrafo (etiqueta
p).
Encontrar un elemento en el documento HTML
Sección titulada «Encontrar un elemento en el documento HTML»Dado un nodo del árbol DOM, a partir de ese punto se puede buscar un/unos elemento/s utilizando las siguientes funciones:
| Función | Descripción |
|---|---|
getElementById() |
Devuelve el elemento que tiene el atributo ID con el valor especificado. |
getElementsByClassName() |
Devuelve una colección HTMLCollection que contiene todos los elementos con el nombre de clase especificado. |
getElementsByName() |
Devuelve una colección HTMLCollection que contiene todos los elementos con el nombre especificado. |
getElementsByTagName() |
Devuelve una colección HTMLCollection que contiene todos los elementos con el nombre de la etiqueta especificada. |
querySelector() |
Devuelve el primer elemento que coincida con el selector CSS especificado (moderna y recomendada). |
querySelectorAll() |
Devuelve todos los elementos que coincidan con el selector CSS especificado. |
Ejemplo básico: getElementById
Sección titulada «Ejemplo básico: getElementById»Veamos un ejemplo utilizando nuestro HTML inicial representado en el árbol de la figura 1.
Queremos obtener el elemento que está identificado con el id cuyo valor es "principal". Utilizamos el método getElementById. La variable document, es una variable global que representa todo el documento HTML actual.
El nodo que recuperamos tiene una propiedad llamada innerText que contiene el valor del elemento (el texto que aparece en la página).
let nodoH1 = document.getElementById("principal");
console.log(nodoH1.innerText); // Encabezado nivel 1Ahora, podemos usar la propiedad innerText para cambiar el valor y ver en consola el resultado.
nodoH1.innerText = "Hola mundo contaminado";
console.log(nodoH1.innerText); // Hola mundo contaminadoAl desplegar en el navegador tenemos:
![]() |
|---|
| Figura 2 |
En el código anterior la variable nodoH1 no tenía ningún tipo definido. La función getElementById retorna un Element o null si no lo encuentra. Entonces la declaración correcta de la variable sería:
let nodoH1 :HTMLElement | null = document.getElementById("principal");Sin embargo, en el modo estricto de tipos en TypeScript, si una variable puede ser null, está no puede accederse directamente, a menos que vaya en un condicional sobre null . Es decir, el código nodoH1.innerText va a producir un error. Una forma de resolverlo es agregando un condicional:
var nodoH1 : HTMLElement | null = document.getElementById("principal");
console.log(nodoH1 == null? '': nodoH1.innerText); // Encabezado nivel 1La solución anterior, además, tiene otro problema y es el tipo de nodeH1 no es el esperado para otras funciones que necesitan HTMLElement. Necesitamos que el tipo de nodeH1 sea HTMLElement pero que pueda tomar el valor de null .
Esto se logra con el operado (sufijo) ! al final de la función que retorna el elemento:
var nodoH1 : HTMLElement | null = document.getElementById("principal")!;
console.log(nodoH1.innerText); // Encabezado nivel 1Métodos modernos: querySelector
Sección titulada «Métodos modernos: querySelector»Para búsquedas más complejas, querySelector() es más poderosa y flexible:
// Encontrar el primer elemento con clase "destacado"const elemento = document.querySelector(".destacado");
// Encontrar el primer input dentro de un formularioconst input = document.querySelector("form input[type='text']");
// Encontrar elemento anidadoconst enlace = document.querySelector(".menu .active a");
elemento.innerText = "Nuevo contenido";Si necesitas encontrar todos los elementos que coincidan:
// Encontrar todos los párrafosconst parrafos = document.querySelectorAll("p");
// Encontrar todos los elementos con clase "card"const tarjetas = document.querySelectorAll(".card");
// Iterar sobre los resultadostarjetas.forEach((tarjeta) => { tarjeta.style.backgroundColor = "lightblue";});Actividad interactiva: Practica encontrar elementos
Sección titulada «Actividad interactiva: Practica encontrar elementos»Ahora es tu turno. En el playground interactivo de abajo, hay un HTML con varios elementos. Tu tarea es escribir código JavaScript para encontrarlos y mostrar su contenido en la consola.
¿Cómo funciona?
- Panel izquierdo: Selecciona un ejercicio de la lista
- Panel central: Verás el código JavaScript listo para ejecutar
- Panel derecho (después de hacer clic en “Consola”): Verás el resultado de
console.log() - Botón “▶ Ejecutar”: Corre el código y muestra el resultado en la consola
- Si el resultado es correcto, verás un ✅ verde
Los 4 pasos que vas a practicar:
- Paso 1: Encontrar un elemento por ID (
getElementById) - Paso 2: Encontrar el primer elemento con una clase (
querySelector) - Paso 3: Encontrar TODOS los elementos con una clase (
querySelectorAll) - Paso 4: Modificar el contenido de un elemento que encontraste
Quiz: ¿Cuál es el método correcto?
Sección titulada «Quiz: ¿Cuál es el método correcto?»Elige el método más apropiado para cada búsqueda:
Necesitas encontrar el elemento con id='header'
🎯 Buscar por IDNecesitas encontrar TODOS los elementos con clase 'tarjeta'
🎯 Buscar múltiples elementos por claseNecesitas encontrar el PRIMER botón dentro de '.modal'
🎯 Buscar con selector CSS complejoNecesitas encontrar todos los input[type='text']
🎯 Buscar con selector de atributoNecesitas buscar en una sección específica, no en todo el documento
🎯 Buscar dentro de un elementoCrear un nuevo elemento en el documento HTML
Sección titulada «Crear un nuevo elemento en el documento HTML»Existen varios métodos para crear nuevos elementos en un DOM. La idea básica es crear el nuevo elemento con la función createElement o con el texto HTML ‘
hola
’, tener localizado el lugar (el elemento) dónde se va a insertar el nuevo. Este puede ser agregado ya sea de forma adyacente al elemento actual o como hijo del elemento actual. Vemos un ejemplo:var nuevoParrafo = document.createElement("p"); // creo el nuevo elementonuevoParrafo.innerText = "Párrafo nuevo";
// Se va a crear el elemento con respecto al `h1 `del HTML, la posición se define con respecto a ese h1.
nodoH1.insertAdjacentElement('afterend', nuevoParrafo); // agrego un elemento creadonodoH1.insertAdjacentHTML('afterend', '<p id="two">Otro Párrafo</p>') // agrego un elemento con el texto htmlEl resultado al desplegar el HTML es:
![]() |
|---|
| Figura 3 |
Actividad interactiva: Crea y manipula elementos
Sección titulada «Actividad interactiva: Crea y manipula elementos»Ahora vas a crear elementos nuevos desde cero y modificarlos. El playground de abajo tiene un área vacía donde puedes agregar contenido dinámicamente.
¿Cómo funciona?
- Selecciona un ejercicio de la lista
- El código JavaScript aparece en el panel central
- Haz clic en “▶ Ejecutar” para correr el código
- Mira en el panel izquierdo cómo cambia el DOM
- Verifica en la consola que la operación fue exitosa
- ¡Si es correcto, verás un ✅ verde!
Los 4 pasos que vas a practicar:
- Paso 1: Crear un nuevo párrafo dinámicamente y agregarlo al DOM
- Paso 2: Agregar contenido HTML usando
insertAdjacentHTML - Paso 3: Modificar atributos de elementos existentes
- Paso 4: Usar
classListpara agregar clases CSS a elementos
Resumen y buenas prácticas
Sección titulada «Resumen y buenas prácticas»Ejercicios de evaluación
Sección titulada «Ejercicios de evaluación»Ejercicio 1: Encontrar elementos
Sección titulada «Ejercicio 1: Encontrar elementos»Completa el código para encontrar los elementos correctos:
const titulo = document.; const primero = document.;
Ejercicio 2: Crear y agregar elementos
Sección titulada «Ejercicio 2: Crear y agregar elementos»Completa el código para crear un nuevo elemento y agregarlo al DOM:
const nuevo = document.; nuevo.innerText = 'Nuevo contenido'; contenedor.;
Ejercicio 3: Manipular estilos y atributos
Sección titulada «Ejercicio 3: Manipular estilos y atributos»Completa el código para modificar un elemento:
const elemento = document.querySelector('#especial');
elemento.;
elemento.;

