Deseo que el mismo botón se comporte de manera diferente para el clic izquierdo y el botón izquierdo del mouse hacia abajo. Al hacer clic, debe agregar 15 al número actual, al presionar el mouse, agrega 1 mientras el mouse esté presionado
var value = 0; document.getElementById("Addbtn").addEventListener("mousedown", mouseDown); document.getElementById("Addbtn").addEventListener("click", mouseClick); function mouseDown() { this.value++; document.getElementById("demo").innerHTML = this.value.tosSring(); } function mouseClick() { this.value += 15; document.getElementById("demo").innerHTML = this.value.tosSring(); }El problema es que ambos eventos se activan y deseo distinguirlos, de modo que cuando se mantiene presionado el mouse, el clic no se activará y viceversa.
¿Hay una manera de lograr esto? Salud
Como dije en el comentario, dado que click y presionar el mousedown están relacionados y no hay forma de desconectarlos entre sí, la solución puede venir con un pequeño truco, agregando un tiempo de espera para determinar si fue una "retención prolongada" de el ratón hacia abajo. Se agregó una pequeña bonificación para deshabilitar el clic si se ha activado el botón hacia abajo, puede eliminarlo si no es necesario. También tenga en cuenta que está en una espera de 1 segundo (1000 ms), cámbielo de acuerdo con cuánto puede esperar antes de decir que es un evento de mousedown. 1 segundo parece mucho para un usuario en algún momento (alrededor de 500 ms es un punto óptimo para mí)
var value = 0; var mouseHoldTimeout; var mouseDownDone = false; document.getElementById("Addbtn").addEventListener("mousedown", mouseDown); document.getElementById("Addbtn").addEventListener("click", mouseClick); function mouseDown() { mouseHoldTimeout = setTimeout(() => { value++; mouseDownDone = true; document.getElementById("demo").innerHTML = value.toString(); }, 1000); } function mouseClick() { if (mouseHoldTimeout) { clearTimeout(mouseHoldTimeout); mouseHoldTimeout = null; } if (mouseDownDone) { mouseDownDone = false; return; } value += 15; document.getElementById("demo").innerHTML = value.toString(); }El evento mousedown se activará cuando haga clic en la izquierda o la derecha o incluso en el medio . No importa en cuál haga clic, ejecuta la función. En contraste, el evento de clic se activará cuando haga clic en la izquierda . Por lo tanto, parece que cuando hace clic en la izquierda, activa el mousedown (para la izquierda) y hace clic en el evento. A medida que el documento proporciona, el evento de clic se activa después de presionar y subir el mouse.