Estoy tratando de construir un botón dinámico de "restablecer" que cambia su texto interno dos veces, en un bucle: una vez que se hace clic por primera vez (cambiando de "Restablecer" a "¿Está seguro?") y una vez cuando se vuelve a hacer clic (cambiando de "Están ¿Estás seguro?" a "Reiniciar"). Sin embargo, no puedo modificar el texto interno dentro de la devolución de llamada. Parece que puedo modificar el texto interno sin problemas desde la consola DOM, así que asumo que hay algo que aún no sé en términos de cómo funcionan las devoluciones de llamadas de eventos en JS, y no puedo averiguar qué es.
function show_confirm_button() { document.getElementById('reset-button').innerText = "Are you sure?"; document.getElementById('reset-button').onclick = reset_button; } function reset_button() { /* resetting things here */ document.getElementById('reset-button').innerText = "Reset"; document.getElementById('reset-button').onclick = show_confirm_button; } show_confirm_button() se usa en un simple botón de arranque:
<button class="..." type="button" onclick=show_confirm_button()> <span id="reset-button">Reset</span> </button>¿Qué me estoy perdiendo?
Como dijo @Barmar:
Debería cambiar el
onclickdel botón , NO el lapso .
Esto debería funcionar:
function show_confirm_button() { document.getElementById('reset-button-text').innerText = "Are you sure?"; document.getElementById('reset-button').onclick = reset_button; } function reset_button() { /* resetting things here */ document.getElementById('reset-button-text').innerText = "Reset"; document.getElementById('reset-button').onclick = show_confirm_button; } <button class="..." type="button" onclick=show_confirm_button() id="reset-button"> <span id="reset-button-text">Reset</span> </button>