Cree un contador de clics simple usando JavaScript

Nithin Krishnan 12 octubre 2023
  1. Haga clic en el contador en un botón con JavaScript
  2. Haga clic en Contador en un div usando JavaScript
  3. Contador de clics: el enfoque no obstructivo
  4. Observaciones
Cree un contador de clics simple usando JavaScript

Un contador de clics registra el número de clics y lo muestra en la pantalla. El contador hace uso del evento click de JavaScript para incrementar el valor del contador. Podemos usarlo en varias áreas, incluso en juegos (para aumentar los puntos o el valor de la puntuación) y en algunos trucos para ahorrar tiempo. Echemos un vistazo al código para crear un contador de clics simple en JavaScript.

Haga clic en el contador en un botón con JavaScript

<h3><center>JavaScript Click Counter</center></h3>
<div>
    <center><h3 id="counter-label">0</h3></center>
</div>
<center>
    <div>
        <button onclick="incrementClick()">Click Me</button>
        <button onclick="resetCounter()">Reset</button>
    </div>
</center>
var counterVal = 0;

function incrementClick() {
  updateDisplay(++counterVal);
}

function resetCounter() {
  counterVal = 0;
  updateDisplay(counterVal);
}

function updateDisplay(val) {
  document.getElementById('counter-label').innerHTML = val;
}

En el código, incrementamos el valor de la variable de contador counterVal en 1 en cada clic del usuario. Los pasos son los siguientes.

  • Creamos una pantalla de contador en el HTML con la etiqueta <h3> y le asignamos un id counter-label para que pueda actualizarse desde el código javascript mediante el document.getElementById() función en javascript.
  • En el HTML, también agregamos un par de botones. Un botón con el texto Click Me, que al hacer clic aumenta el valor del contador en 1. Del mismo modo, en el otro botón, tenemos un texto Restablecer en el HTML que restablecerá el contador a 0.
  • Al hacer clic en el botón click me, debemos incrementar el valor del contador. Para eso, usamos el detector de eventos onclick. Y active la función incrementClick() con el clic del botón Haga clic en mí.
  • Dentro de la función incrementClick(), incrementamos la variable global counterVal en 1 y llamamos a la función updateDisplay.
  • Al hacer clic en el botón Reset, llamamos a la función resetCounter(). En esta función restablecemos el valor del contador global (counterVal) a 0 y llamamos a la función updateDisplay().
  • En la función updateDisplay() mostramos el valor que recibe como parámetro, en la etiqueta <h3> que contiene el valor del contador. Utiliza la función document.getElementById() de javascript para consultar el elemento HTML con id counter-label y luego actualiza el atributo innerHTML con el nuevo valor del contador. El atributo innerHTML cambia aún más el texto que se muestra en la interfaz GUI HTML.

El ejemplo de código anterior muestra el contador de clics y lo incrementa al hacer clic en un botón. En la mayoría de los casos de uso, es posible que no apliquemos el contador de clics siempre en un botón. Para hacerlo flexible, tendremos que admitir la función para otros elementos HTML como div, li, etc. Casi todos los elementos HTML tienen el evento click con el controlador de eventos onclick.

Haga clic en Contador en un div usando JavaScript

En los juegos, las escenas no siempre tienen un botón para activar el incremento del contador. En su mayoría, puede estar compuesto por elementos HTML como div. En tales casos, podemos usar el controlador de eventos onclick de la etiqueta div para capturar el clic para incrementar el valor del contador. Consulte el siguiente ejemplo de código.

<h3><center>JavaScript Click Counter</center></h3>
<div>
    <center><h3 id="counter-label">0</h3></center>
</div>
<center>
    <div>
        <div onclick="incrementClick()">Click Me</div>
        <button onclick="resetCounter()">Reset</button>
    </div>
</center>
var counterVal = 0;

function incrementClick() {
  updateDisplay(++counterVal);
}

function resetCounter() {
  counterVal = 0;
  updateDisplay(counterVal);
}

function updateDisplay(val) {
  document.getElementById('counter-label').innerHTML = val;
}

Puede observar que en este ejemplo hemos usado div en la línea <div onclick="incrementClick()">Click Me</div>. Con este cambio, el incrementClick() se activa con un clic del div en lugar del botón. El código funcionará bien con etiquetas HTML como <li>, <a>, <div>, etc. también. Casi todas las etiquetas HTML que soportan los manejadores de eventos onclick pueden asociarse con un oyente onclick y funcionar de manera similar.

Contador de clics: el enfoque no obstructivo

Si implementamos el contador de clics con un enfoque sin obstáculos en JavaScript, necesitaremos eliminar el controlador de eventos onclick en HTML y moverlo al código JavaScript. Sin embargo, la estructura del código se ve un poco diferente, observe el siguiente código de muestra.

<h3><center>JavaScript Click Counter</center></h3>
<div>
    <center><h3 id="counter-label">0</h3></center>
</div>
<center>
    <div>
        <div id="click-div">Click Me</div>
        <button id="reset-button">Reset</button>
    </div>
</center>
window.onload =
    function() {
  let clickDiv = document.getElementById('click-div');
  clickDiv.onclick = incrementClick;

  let resetBtn = document.getElementById('reset-button');
  resetBtn.onclick = resetCounter;
}

var counterVal = 0;

incrementClick =
    function() {
  updateDisplay(++counterVal);
}

function resetCounter() {
  counterVal = 0;
  updateDisplay(counterVal);
}

function updateDisplay(val) {
  document.getElementById('counter-label').innerHTML = val;
}

Aquí, enlazamos los eventos de clic en código JavaScript. La estructura sigue siendo la misma, excepto que usamos un oyente onclick para el div Click Me y el botón Reset. Esta vinculación tiene lugar en el tiempo de ejecución. Y a ese oyente de clics, vinculamos nuestras funciones definidas. Entonces el código se ve similar y no tiene muchos cambios.

Observaciones

La diferencia entre el enfoque sin obstáculos es que enlazamos el oyente onclick en el código javascript en lugar de hacerlo en el HTML. Será difícil darse cuenta solo del HTML si al botón o al div se le asigna un controlador de eventos onclick.

Con este enfoque, el código se ve más limpio ya que todos los eventos onclick están vinculados y manejados en JavaScript. Mantiene el HTML limpio con el marcado ya que ningún código JavaScript se entromete en HTML.

El código no funcionará si no configuramos el oyente onclick dentro de la función window.onload. El código document.getElementById("click-div") devolverá null ya que no podrá encontrar el elemento HTML. La función wondow.onload se activa una vez que se carga la ventana y el DOM está listo. Por lo tanto, al poner el código dentro del bloque window.onload se asegura que el elemento HTML se cargue y se pueda consultar con la función document.getElementById() de JavaScript.