El Document Object Model (DOM) es una interfaz de programación que representa la estructura de un documento HTML como un árbol de objetos. JavaScript puede acceder y modificar estos objetos para cambiar dinámicamente el contenido, estructura y estilo de una página web.
Cuando el navegador carga una página HTML, crea un modelo de objetos del documento. Este modelo es una representación en memoria de la estructura de la página:
console.log('DOM', document);
El objeto document es el punto de entrada al DOM y representa todo el documento HTML.
El DOM no es JavaScript - es una API web que JavaScript puede usar para interactuar con HTML y XML.
Puedes cambiar los estilos CSS directamente desde JavaScript:
function demoGetByClass() { var elementos = document.getElementsByClassName('destacado'); console.log('getElementsByClassName encontró:', elementos.length, 'elementos'); for (var i = 0; i < elementos.length; i++) { elementos[i].style.backgroundColor = 'orange'; elementos[i].style.color = 'white'; }}
Los nombres de propiedades CSS en JavaScript usan camelCase: background-color se convierte en backgroundColor.
Puedes remover elementos del DOM cuando ya no los necesites.
function demoRemove() { var lista = document.getElementById('lista-items'); var item = document.getElementById('item-remover'); if (item) { lista.removeChild(item); console.log('Elemento removido'); }}
Puedes leer y modificar atributos HTML de los elementos.
// Obtener un atributoconst valor = elemento.getAttribute('data-id');// Establecer un atributoelemento.setAttribute('data-id', '123');// Verificar si existe un atributoif (elemento.hasAttribute('disabled')) { // ...}// Remover un atributoelemento.removeAttribute('disabled');
Manipular clases CSS es una forma común de cambiar estilos:
// Agregar una claseelemento.classList.add('activo');// Remover una claseelemento.classList.remove('inactivo');// Alternar una clase (agregar si no existe, remover si existe)elemento.classList.toggle('destacado');// Verificar si tiene una claseif (elemento.classList.contains('activo')) { // ...}
Usa classList en lugar de manipular directamente className - es más seguro y conveniente.