Tengo un botón en una página web que se carga después de un período de tiempo determinado, funciona bien, pero a mi cliente le gustaría una manera fácil de agregar un botón que llame a esta función para que pueda agregarle valores dinámicos.
En este caso, el botón debería eliminar una clase después de 5 segundos de carga de la página/elemento:
Problema, no se está llamando a la función, verifiqué que la referencia al archivo javascript es correcta, sospecho que el problema es la forma en que estoy llamando a la función, aquí está mi código:
<a href="somewhere.com" id="myButton" window.onload='showButton("myButton", "5000")'; class="invisible">Now you can see me!</a> function showButton(id, time) { setTimeout(function() { showButtonPrep(id, time); }, time); console.log("I have fired!"); } function showButtonPrep(id, time) { var button = document.getElementById(id); button.classList.remove('invisible'); }La consola no registra la cadena, por lo que puedo ver que no se está cargando. He probado variaciones de la carga, es decir.
window.load this.loadEl archivo javascript que contiene la función está en el pie de página, si coloco una alerta en la parte superior del archivo javascript que se activa.
window.onload no es un atributo HTML válido para <a> . Esto parece una confusión entre HTML y JavaScript.
Deberías poner eso dentro de un script:
window.onload = () => showButton("myButton", 5000); function showButton(id, time) { setTimeout(function() { showButtonPrep(id, time); }, time); console.log("I have fired! Now wait 5 seconds..."); } function showButtonPrep(id, time) { var button = document.getElementById(id); button.classList.remove('invisible'); } .invisible { display: none } <a href="somewhere.com" id="myButton" class="invisible">Now you can see me!</a>