Skip to content

Arregla los botones de sonido y sombra, que fallaban en cada clic - #1

Merged
SirHegel merged 1 commit into
mainfrom
arreglo-botones
Aug 20, 2026
Merged

Arregla los botones de sonido y sombra, que fallaban en cada clic#1
SirHegel merged 1 commit into
mainfrom
arreglo-botones

Conversation

@SirHegel

Copy link
Copy Markdown
Owner

El problema

e.currentTarget solo es válido mientras el evento se está despachando. En cuanto el manejador cede el control con un await, el navegador lo deja en null.

Los dos manejadores hacían justo eso:

await guardarAjuste('sonido', activo);
e.currentTarget.setAttribute(...);   // currentTarget ya es null

Cada clic lanzaba TypeError: Cannot read properties of null (reading 'setAttribute').

Por qué pasó desapercibido

El ajuste se guardaba y el efecto se aplicaba, porque ambos ocurren antes del await. Lo único que no pasaba era actualizar el icono: el sonido se silenciaba de verdad, pero el botón seguía mostrando el altavoz encendido, así que parecía que no había hecho nada.

Lo encontré al añadir un tercer botón que copiaba el mismo patrón.

La corrección

Guardar la referencia al botón antes de esperar, y actualizar la interfaz antes de tocar la base de datos, para que la respuesta sea inmediata y el guardado ocurra después.

Comprobado

  • 52 pruebas pasando
  • Verificado en Chrome: los botones ya cambian de icono y no hay errores en consola

… clic

e.currentTarget solo es valido mientras el evento se esta despachando. Los dos
manejadores esperaban a guardarAjuste() con un await y despues leian
e.currentTarget, que para entonces ya era null. Cada clic lanzaba un
TypeError y el icono del boton no llegaba a cambiar nunca.

El ajuste si se guardaba y el efecto si se aplicaba, porque ambos ocurren
antes del await, asi que el fallo pasaba desapercibido: el sonido se
silenciaba de verdad, pero el boton seguia mostrando el altavoz encendido.

Se guarda la referencia al boton antes de esperar, y se actualiza la interfaz
antes de tocar la base de datos: el usuario ve la respuesta al instante y el
guardado ocurre despues.
@SirHegel
SirHegel merged commit 73b3faa into main Aug 20, 2026
1 check passed
@SirHegel
SirHegel deleted the arreglo-botones branch August 20, 2026 04:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant