TAICord TAICord

Quizzes Píldoras Unirse al servidor Login con Discord
← Bloque 3

DOM JS

Bloque 3 26/03/2026 · Hector

🧠 PÍLDORA TAI — DOM (Document Object Model) COMPLETA

⚙️ 1. ¿QUÉ ES EL DOM? (base conceptual)

👉 El DOM (Document Object Model) es una representación en árbol de un documento HTML/XML.
• Cada elemento → nodo (Node)
• Estructura → jerárquica (árbol)
• Permite → acceder, modificar, crear y eliminar elementos

📌 El navegador convierte HTML → árbol DOM manipulable con JavaScript

🌳 2. TIPOS DE NODOS (MUY PREGUNTABLE)

Tipo Descripción
Document Nodo raíz
Element Etiquetas HTML (

)
Text Texto dentro de elementos
Attribute Atributos (menos usado directamente)

⚠️ TRAMPA:

innerText y textContent trabajan con nodos de tipo Text

🔎 3. ACCESO A ELEMENTOS (SELECCIÓN)

🔹 Clásicos (legacy pero preguntables)

document.getElementById("id")
document.getElementsByClassName("clase")
document.getElementsByTagName("div")

📌 Devuelven:
• getElementById → 1 elemento
• los otros → HTMLCollection (no array real)

🔹 Modernos (MUY IMPORTANTES)

document.querySelector("div.clase")
document.querySelectorAll("div.clase")

•	querySelector → 1 elemento
•	querySelectorAll → NodeList

⚠️ TRAMPA:
• NodeList ≠ HTMLCollection
• NodeList puede ser estático
• HTMLCollection suele ser live (dinámico)

🔗 4. NAVEGACIÓN EN EL DOM (CLAVE TAI)

🔹 Acceso a hijos

element.childNodes // TODOS (incluye texto y espacios)
element.children // SOLO elementos HTML

element.firstChild // puede ser texto ⚠️
element.firstElementChild // solo elementos

element.lastChild
element.lastElementChild

🔹 Acceso a hermanos

element.nextSibling
element.nextElementSibling

element.previousSibling
element.previousElementSibling

🔹 Acceso al padre

element.parentNode
element.parentElement

⚠️ TRAMPA:
• parentNode puede devolver nodos no elemento
• parentElement solo devuelve elementos HTML

📌 5. ÍNDICES Y COLECCIONES (MUY EXAMENABLE)

element.children[0]
element.children[1]

•	Índices empiezan en 0
•	children → array-like

⚠️ TRAMPA:

childNodes[0]

👉 puede ser un nodo de texto (espacio en blanco)

✏️ 6. MODIFICACIÓN DEL DOM

🔹 Cambiar contenido

element.innerHTML // interpreta HTML
element.textContent // solo texto (más seguro)

⚠️ TRAMPA:
• innerHTML → riesgo XSS
• textContent → no interpreta HTML

🔹 Cambiar atributos

element.setAttribute("class", "nueva")
element.getAttribute("class")
element.removeAttribute("class")

➕ 7. CREACIÓN Y AÑADIDO DE NODOS

🔹 Crear

const nuevo = document.createElement("div")
const texto = document.createTextNode("Hola")

🔹 Añadir (CLAVE EXAMEN)

padre.appendChild(nuevo)

👉 Añade al final

🔹 Otros métodos importantes

padre.append(nuevo) // moderno
padre.prepend(nuevo) // al inicio

padre.insertBefore(nuevo, referencia)

❌ 8. ELIMINACIÓN Y REEMPLAZO

padre.removeChild(hijo)

element.remove() // moderno

padre.replaceChild(nuevo, viejo)

⚡ 9. EVENTOS (RELACIONADO CON DOM)

element.addEventListener("click", funcion)

📌 Tipos comunes:
• click
• input
• change
• submit

⚠️ 10. TRAMPAS TÍPICAS TAI

💀 Muy frecuentes:
• firstChild → puede ser texto (espacios)
• childNodes → incluye nodos invisibles
• HTMLCollection ≠ array (no .map)
• appendChild → mueve nodo si ya existe (NO duplica)

🧠 11. REGLAS DE ORO (MEMORIZACIÓN)
• children → elementos
• childNodes → TODO
• firstElementChild > firstChild
• appendChild → final
• prepend → inicio
• querySelector → moderno y flexible

🎯 12. MINI BATERÍA TIPO EXAMEN (TAI)

¿Qué devuelve firstChild en un elemento HTML con espacios?
a) Primer elemento hijo
b) Primer nodo (puede ser texto)
c) Siempre null
d) Siempre elemento

¿Qué método añade un nodo al final de un elemento?
a) insertBefore
b) appendChild
c) prepend
d) addNode

¿Cuál devuelve solo elementos HTML?
a) childNodes
b) children
c) firstChild
d) nodeList

¿Qué diferencia clave hay entre innerHTML y textContent?
a) Ninguna
b) innerHTML no modifica contenido
c) textContent no interpreta HTML
d) innerHTML solo funciona en XML

¿Qué ocurre si haces appendChild con un nodo existente?
a) Se duplica
b) Se elimina
c) Se mueve
d) Error

Si quieres, el siguiente nivel sería 🔥:
• Quizcord CSV con 25 preguntas de DOM (muy estilo examen real)
• o una píldora combinada DOM + BOM + eventos avanzada (nivel trampa dura)