Saltar al contenido principal
Codigo Heroe
Tarea anterior
Introducción a los eventos3/21
A la lista de tareas
  1. 1. Eventos del usuario
  2. 2. Añadir un manejador de eventos
  3. 3. Sintaxis de los manejadores
  4. 4. Acciones predeterminadas
  5. 5. Funciones como argumentos
  6. 6. Eliminar clases con classList.remove()
  7. 7. Eventos de teclado
  8. 8. Identificar una tecla
  9. 9. Cerrar una ventana con ESC
  10. 10. Seleccionar los elementos de una galería
  11. 11. Añadir manejadores en un ciclo
  12. 12. Cambiar el src de una imagen
  13. 13. Depurar un manejador
  14. 14. Ámbito local
  15. 15. Ámbito global
  16. 16. Cambiar variables externas
  17. 17. Funciones dentro de funciones
  18. 18. Cierres
  19. 19. Un cierre en cada llamada
  20. 20. Usar cierres en los manejadores
  21. 21. Completar la galería
Siguiente tarea
  • Matriz de skills
  • Cursos
  • Registro
  • Iniciar sesión

Loading…
En unos segundos, estará listo.

  • Teoría
  • Teoría

Sintaxis de los manejadores

Ahora veamos con detalle qué significa esta expresión:

button.addEventListener('click', function () {
  // Instrucciones
});

1. El elemento

En el ejemplo, button es el botón en el que esperamos un evento del usuario: un clic, una pulsación o la entrada de datos. El elemento se escribe al principio.

Después añadimos un punto y addEventListener para indicar que queremos añadir un «escucha de eventos».

2. El nombre del evento

El primer argumento de addEventListener es el nombre del evento que queremos detectar. Se escribe como una cadena, así que debe ir entre comillas. Los eventos tienen nombres definidos: no podemos detectar un clic pasando cualquier cadena que se nos ocurra, como 'push'. Puedes consultar los nombres de los eventos aquí.

3. El manejador

El segundo argumento de addEventListener es una función: el manejador del evento. Dentro indicamos qué hacer cuando ocurra el evento, es decir, cómo manejarlo. Podemos mostrar mensajes en la consola, algo útil para depurar, cambiar clases o contenido de los elementos y llamar a otras funciones. Es una función como las demás, con algunas particularidades que veremos más adelante.

Lo principal es que la función que pasamos como manejador no se ejecuta de inmediato. Las instrucciones de su cuerpo se ejecutarán cuando ocurra el evento indicado.

Podemos leer el ejemplo así: añadimos un manejador de clic al botón button. Cuando se haga clic en él, se ejecutarán unas instrucciones.

Ya encontramos el botón, lo guardamos en openPopupButton y añadimos su manejador. Ahora escribiremos instrucciones dentro del manejador. Mostraremos un mensaje en la consola al hacer clic para comprobar que el manejador se ejecuta.

  • index.html
  • style.css
  • script.js
HTML
<!DOCTYPE html> <html lang="es"> <head> <meta charset="utf-8"> <title>CandyShop</title> <link href="candy-shop/setting.css" rel="stylesheet"> <link href="style.css" rel="stylesheet"> </head> <body> <section class="card"> <div class="card__content"> <h1 class="visually-hidden">Heladería CandyShop</h1> <img class="card__logo" src="candy-shop/candyshop.svg" width="205" height="63" alt="CandyShop"> <p class="card__text">¡Preparamos helado con la crema más fresca!</p> <img class="card__img" src="candy-shop/icecream.png" width="196" height="240" alt="Helado"> </div> <div class="card__controls"> <a href="contacts.html" class="card__button button-open">Mostrar contacto</a> </div> </section> <section class="modal"> <div class="modal__content"> <h2 class="visually-hidden">Contacto</h2> <h3>Dirección:</h3> <p>Calle de la Crema, 19, Ciudad Dulce</p> <h3>Teléfono:</h3> <p>+1 (555) 010-1919</p> <h3>Correo:</h3> <p>contacto@example.com</p> <button class="modal__button button-close" type="button">Cerrar</button> </div> </section> <script src="script.js"></script> </body> </html>
CSS
h3 { margin: 0.5em 0; } p { margin: 0.5em 0 2em; } .card { width: 420px; margin: 50px auto 0; } .card__content { position: relative; background-color: #fad400; display: flex; flex-direction: column; align-items: flex-start; padding-top: 15px; padding-left: 20px; box-shadow: 0 5px 8px 0 #e8e8e8; } .card__img { align-self: flex-end; margin-top: auto; } .card__logo { position: absolute; } .card__text { font-size: 16px; line-height: 22px; font-weight: bold; position: absolute; left: 20px; top: 100px; width: 190px; } .card__controls { display: flex; justify-content: center; align-items: center; border: 2px solid #e8e8e8; border-top: 0; border-bottom-right-radius: 10px; border-bottom-left-radius: 10px; padding-top: 20px; padding-bottom: 20px; } .card__button { border: 0; padding: 12px 0; width: 230px; text-transform: uppercase; text-align: center; border-radius: 50px; color: #ffffff; font-weight: bold; font-size: 16px; text-decoration: none; background-color: #fad400; } .card__button:hover, .card__button:focus { background-color: #82da03; } .card__button:active { color: rgba(255, 255, 255, 0.3); background-color: #6cb502; } .modal { display: none; position: absolute; top: 0; left: 0; width: 100%; height: 100%; } .modal--show { display: block; } .modal::after { content: ""; position: fixed; top: 0; left: 0; height: 100%; width: 100%; background-color: rgba(0, 0, 0, 0.3); z-index: 1; } .modal__content { position: relative; width: 300px; margin: 100px auto; padding: 30px 70px 15px; background-color: #ffffff; box-shadow: -1px 5px 12px 0 rgba(89, 90, 90, 0.3); z-index: 2; } .modal__button { position: absolute; top: 20px; right: 20px; width: 20px; height: 20px; font-size: 0; background: none; border: 0; } .modal__button::after, .modal__button::before { content: ""; position: absolute; right: 0; top: 20px; width: 26px; height: 6px; margin: -13px -3px; background-color: #7656de; } .modal__button::before { transform: rotate(45deg); } .modal__button::after { transform: rotate(-45deg); } .modal__button:hover::after, .modal__button:hover::before, .modal__button:focus::after, .modal__button:focus::before { background-color: #9b7ff7; } .modal__button:active::after, .modal__button:active::before { background-color: #4023a0; } .visually-hidden { position: absolute; width: 1px; height: 1px; margin: -1px; border: 0; padding: 0; white-space: nowrap; clip-path: inset(100%); clip: rect(0 0 0 0); overflow: hidden; }
JavaScript
var popup = document.querySelector('.modal'); var openPopupButton = document.querySelector('.button-open'); openPopupButton.addEventListener('click', function () { });

El código ha cambiado, haz clic en "Actualizar" o activa la ejecución automática.

Ha ido a otra página

Haga clic dentro del mininavegador para poner el foco en esta ventana.

100%
Consola
ObjetivosRealizado
0
    1. Dentro del manejador, añade la instrucción que muestra la cadena 'Clic en el botón' en la consola.
    2. Haz clic en el botón «Mostrar contacto» y comprueba el mensaje en la consola.
    Codigo Heroe

    © 2023-2026, codigoheroe.com