Haga un botón que muestre el número de clics en él. Si el siguiente clic ocurre más rápido que un segundo después del clic anterior en el botón, el botón se bloquea (use el atributo deshabilitado), el contador de clics se restablece a cero.
Mi intento:
const buttons = document.getElementById(`button`); buttons.onclick = function () { buttons.disabled = true; setTimeout(function () { buttons.disabled = false }, 1000); console.log(`click`) } buttons.addEventListener('click', () => { console.log(`Bbb`); let clicks = +this.dataset.clicks; clicks += 1; console.log(clicks); this.dataset.clicks = clicks; });const btn = document.getElementById('button'); let clicks = 0; btn.addEventListener('click', function () { clicks += 1; console.log('click'); this.innerHTML = clicks; });Desaconsejo publicar meras soluciones para ejercicios de codificación, pero realmente no sé cómo explicar esto, jajaja.
¿Es este el comportamiento que desea lograr?
Usando una función auxiliar que devuelve la hora actual en ms, simplemente almacenamos la hora de cada clic y la comparamos con la última.
function now() { return (new Date()).getTime(); } const button = document.getElementById(`button`); button.addEventListener('click', function() { if (this.last && now() - (this.last) < 1000) { this.innerText = "0" this.disabled = true; return; } let clicks = parseInt(this.innerText, 10); clicks += 1; this.innerText = clicks; this.last = now(); }); button { width: 200px; height: 40px; } <button id="button">0</button>