Me gustaría activar un temporizador para que se ejecute cuando mi página se cargue por primera vez.
Esto es lo que he probado:
let countdown; ... const buttons = document.querySelectorAll("[data-time]"); ... function timer(seconds) { // clear any existing timers clearInterval(countdown); const now = Date.now(); const then = now + seconds * 1000; displayTimeLeft(seconds); displayEndTime(then); ... function startTimer() { const seconds = parseInt(this.dataset.time); timer(seconds); } ... window.addEventListener('load', buttons[0].addEventListener('click', startTimer).trigger('click'))me sale el error:
Uncaught TypeError: Cannot read properties of undefined (reading 'trigger')
Hay un error porque addEventListener no devuelve nada y también trigger() una función jQuery que hace clic en un botón. En su lugar, puede usar .click()
window.addEventListener('load', buttons[0].click())
La forma más fácil sería hacerlo así:
window.addEventListener('load', startTimer)No estoy seguro de por qué desea activar el evento de clic en el botón, pero si es necesario, debe hacer algo como eso:
window.addEventListener('load', () => { buttons[0].addEventListener('click', startTimer) const event = new Event('click') buttons[0].dispatchEvent(event) }) El error que tiene se debe al hecho de que addEventListener no devuelve nada que tenga un método llamado trigger (no devuelve nada en absoluto).
Pero nuevamente, debería ser suficiente pasar startTimer como una devolución de llamada al detector de eventos de load , sin necesidad de anidar un detector de eventos adicional y activar el evento de clic en él.