Los selectores son la base de la manipulación del DOM. Antes de poder modificar un elemento, necesitas seleccionarlo. JavaScript ofrece varios métodos para encontrar elementos en el documento.
Selecciona todos los elementos que tienen una clase CSS específica. Retorna una HTMLCollection (similar a un array).
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'; }}
Características:
Retorna una colección viva (se actualiza automáticamente si el DOM cambia)
Puedes iterar sobre ella con un bucle for
No necesitas el prefijo . como en CSS
Si no encuentra elementos, retorna una colección vacía (length = 0)
Las HTMLCollection son “vivas”, lo que significa que se actualizan automáticamente. Ten cuidado al modificar elementos mientras iteras, ya que la colección puede cambiar durante el bucle.
Selecciona todos los elementos de un tipo de etiqueta HTML específico.
var elementByTagName = document.getElementsByTagName('ul');console.log('getElementsByTagName:', elementByTagName);
Ejemplo práctico:
// Seleccionar todos los párrafosconst parrafos = document.getElementsByTagName('p');// Cambiar el color de todos los párrafosfor (let i = 0; i < parrafos.length; i++) { parrafos[i].style.color = 'navy';}
Características:
Retorna una HTMLCollection viva
Útil para seleccionar todos los elementos de un tipo
Puedes usar '*' para seleccionar todos los elementos
Todos estos métodos también funcionan en elementos específicos, no solo en document:
// Seleccionar un contenedorconst contenedor = document.getElementById('contenedor');// Buscar solo dentro de ese contenedorconst items = contenedor.querySelectorAll('.item');const destacados = contenedor.getElementsByClassName('destacado');
Buscar dentro de un elemento específico es más rápido que buscar en todo el documento, especialmente en páginas grandes.