addEventListener
y sus usos
addEventListener
es un método de JavaScript que nos permite “escuchar” un evento específico en un elemento del DOM y ejecutar una función (callback) cuando este evento sucede. Es la forma recomendada para manejar eventos sin mezclar la lógica en el HTML y permite asociar más de un evento al mismo elemento.
//Este elemento está en el HTML
<button id="miBoton">Haz clic aquí</button>
const btn = document.getElementById("miBoton");
//Asignamos un evento "click" al botón
btn.addEventListener("click", () => {
alert("¡Has hecho click en el botón!");
});
JavaScriptPero… ¿Qué es un evento
Un evento en JavaScript es una acción o suceso que ocurre en la página, ya sea por parte del usuario (clic, pulsación de teclas, etc.) o del propio navegador (final de carga, error, etc.). Cuando ocurre un evento, si hemos asociado una función a él, esa función se ejecuta automáticamente.
Principales tipos de eventos en JavaScript
Existen numerosos eventos en JavaScript. Aquí tienes algunos de los más comunes:
1. Eventos del ratón
- click: cuando el usuario hace clic en un elemento.
- dblclick: cuando se hace doble clic.
- mouseover: cuando el ratón pasa por encima de un elemento.
- mouseout: cuando el ratón sale de un elemento.
- mousemove: cuando se mueve el ratón.
2. Eventos del teclado
- keydown: cuando se presiona una tecla.
- keyup: cuando se suelta una tecla.
- keypress: cuando se presiona una tecla que produce un carácter (cada vez se usa menos).
3. Eventos de la página
- load: la página o un recurso ha terminado de cargarse.
- DOMContentLoaded: cuando el documento HTML se ha cargado y parseado.
- scroll: cuando el usuario se desplaza por la página.
- resize: cuando cambia el tamaño de la ventana.
4. Eventos de formularios
- submit: cuando se envía un formulario.
- input: cuando cambia el valor de un campo de texto, checkbox, etc.
- focus: cuando un campo de formulario recibe el foco.
- blur: cuando el foco abandona un campo.
5. Eventos de arrastrar y soltar
- dragstart: al comenzar a arrastrar un elemento.
- dragover: al arrastrar sobre una zona válida.
- drop: al soltar el elemento arrastrado.
6. Eventos de audio y vídeo
- play: cuando se inicia la reproducción.
- pause: cuando se pausa.
- ended: cuando finaliza la reproducción.
Ejemplos prácticos
Evento de ratón:
//Este elemento está en el HTML
<button id="btnHover">Pasa el ratón por aquí</button>
const btnHover = document.getElementById("btnHover");
// mouseover: se dispara al pasar el cursor por encima
btnHover.addEventListener("mouseover", () => {
console.log("Has pasado el ratón por el botón.");
});
JavaScriptEvento de teclado:
//Este elemento está en el HTML
<input type="text" id="campoTexto" placeholder="Escribe algo..." />
const input = document.getElementById("campoTexto");
// keyup: se dispara cuando el usuario suelta una tecla
input.addEventListener("keyup", (evento) => {
console.log("Has pulsado la tecla:", evento.key);
});
JavaScriptEvento de formulario:
//Este elemento está en el HTML
<form id="miFormulario">
<input type="text" name="nombre" placeholder="Tu nombre" required />
<button type="submit">Enviar</button>
</form>
const form = document.getElementById("miFormulario");
// submit: se dispara al enviar el formulario
form.addEventListener("submit", (e) => {
e.preventDefault(); // Evita la recarga de la página
alert("Formulario enviado sin recargar la página");
});
JavaScriptCuriosidades y buenas prácticas
- Remover eventos: puedes usar
removeEventListener
para quitar un evento que ya no necesites. - Fases de eventos (captura y burbuja): puedes especificar
{ capture: true }
enaddEventListener
para escuchar el evento en la fase de captura en lugar de la fase de burbuja (por defecto). - Delegación de eventos: en lugar de asignar eventos a cada elemento hijo, asóciala a un elemento padre y usa
event.target
para determinar qué hijo originó el evento. Mejora el rendimiento si tienes muchos elementos. - Compatibilidad con navegadores antiguos: en versiones muy antiguas de Internet Explorer se usaba
attachEvent
, pero hoy en díaaddEventListener
es el estándar.
Conocer estos eventos y cómo manejarlos te permitirá dar interactividad a tus sitios o aplicaciones web de forma eficaz. ¡Pruébalos y diviértete creando funcionalidades interactivas en tus proyectos!