Manipulacion del DOM
Seleccionar y actualizar elementos
El DOM (Document Object Model)
El DOM es una representacion en forma de arbol de tu pagina HTML. JavaScript puede acceder y modificar el DOM para crear paginas interactivas.
Seleccionando Elementos
// Por ID (retorna un elemento)
const encabezado = document.getElementById("encabezado");
// Por selector CSS (primer coincidencia)
const primerBoton = document.querySelector(".boton");
const primerParrafo = document.querySelector("p");
// Por selector CSS (todos los que coinciden)
const todosLosBotones = document.querySelectorAll(".boton");
const todosLosParrafos = document.querySelectorAll("p");
// Por clase (HTMLCollection)
const items = document.getElementsByClassName("item");
// Por etiqueta (HTMLCollection)
const divs = document.getElementsByTagName("div");
// Consejo: usa querySelector y querySelectorAll para todo
Modificando Contenido
const elemento = document.querySelector("#mi-elemento");
// Texto interno (solo texto)
elemento.textContent = "Nuevo texto";
// HTML interno (puede incluir etiquetas)
elemento.innerHTML = "<strong>Texto en negrita</strong>";
// HTML externo (reemplaza el elemento completo)
elemento.outerHTML = "<div id='nuevo'>Nuevo elemento</div>";
// Atributos
elemento.setAttribute("class", "destacado");
elemento.getAttribute("id");
elemento.removeAttribute("class");
// Acceso directo a atributos comunes
elemento.id = "nuevo-id";
elemento.className = "clase1 clase2";
elemento.src = "imagen.jpg"; // para <img>
elemento.href = "pagina.html"; // para <a>
Modificando Estilos
const elemento = document.querySelector(".caja");
// Estilos en linea (propiedad style)
elemento.style.backgroundColor = "blue";
elemento.style.fontSize = "20px";
elemento.style.display = "flex";
// Multiples estilos
Object.assign(elemento.style, {
backgroundColor: "red",
padding: "10px",
borderRadius: "5px"
});
// Clases CSS (recomendado)
elemento.classList.add("activo");
elemento.classList.remove("inactivo");
elemento.classList.toggle("visible");
elemento.classList.contains("activo"); // true/false
elemento.classList.replace("viejo", "nuevo");
Creando y Eliminando Elementos
// Crear elemento
const nuevoDiv = document.createElement("div");
nuevoDiv.textContent = "Soy nuevo!";
nuevoDiv.className = "tarjeta";
// Agregar al DOM
const contenedor = document.querySelector("#contenedor");
contenedor.appendChild(nuevoDiv);
// Insertar en posicion especifica
contenedor.insertBefore(nuevoDiv, contenedor.firstChild);
// Metodos modernos
contenedor.prepend(nuevoDiv); // Al inicio
contenedor.append(nuevoDiv); // Al final
nuevoDiv.before(otroElemento); // Antes de nuevoDiv
nuevoDiv.after(otroElemento); // Despues de nuevoDiv
// Eliminar elemento
nuevoDiv.remove();
// O: contenedor.removeChild(nuevoDiv);
// Clonar elemento
const clon = nuevoDiv.cloneNode(true); // true = clon profundo
Navegando el DOM
const elemento = document.querySelector(".item");
// Padre
elemento.parentElement;
elemento.parentNode;
// Hijos
elemento.children; // HTMLCollection de hijos elemento
elemento.childNodes; // NodeList (incluye nodos de texto)
elemento.firstElementChild;
elemento.lastElementChild;
// Hermanos
elemento.previousElementSibling;
elemento.nextElementSibling;
// Buscar ancestro
elemento.closest(".contenedor"); // Primer ancestro que coincide