Crie um contador de cliques simples usando JavaScript

Nithin Krishnan 12 outubro 2023
  1. Clique no contador em um botão usando JavaScript
  2. Clique no contador em uma div usando JavaScript
  3. Clique no contador - a abordagem não obstrutiva
  4. Observações
Crie um contador de cliques simples usando JavaScript

Um contador de cliques registra o número de cliques e o exibe na tela. O contador usa o evento JavaScript click para incrementar o valor do contador. Podemos usá-lo em várias áreas, inclusive em jogos (para aumentar os pontos ou o valor da pontuação) e em alguns hacks que economizam tempo. Vejamos o código para criar um contador de cliques simples em JavaScript.

Clique no contador em um botão usando 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;
}

No código, incrementamos o valor da variável do contador counterVal em 1 a cada clique do usuário. As etapas são as seguintes.

  • Criamos uma exibição de contador no HTML com a tag <h3> e atribuímos a ela um id counter-label para que possa ser atualizado a partir do código javascript pelo document.getElementById() função em javascript.
  • No HTML, também adicionamos alguns botões. Um botão com o texto Click Me, que ao clicar aumenta o valor do contador em 1. Da mesma forma, no outro botão, temos um texto Reset no HTML que zera o contador para 0.
  • Ao clicar no botão clique-me, precisamos incrementar o valor do contador. Para isso, usamos o ouvinte de evento onclick. E acione a função incrementClick() com o clique do botão Click Me.
  • Dentro da função incrementClick(), incrementamos a variável global counterVal em 1 e chamamos a função updateDisplay.
  • Ao clicar no botão Reset, chamamos a função resetCounter(). Nesta função, redefinimos o valor do contador global (counterVal) para 0 e chamamos a função updateDisplay().
  • Na função updateDisplay() exibimos o valor que ele recebe como um parâmetro, na tag <h3> que contém o valor do contador. Ele usa a função document.getElementById() do javascript para consultar o elemento HTML com o id counter-label e então atualiza o atributo innerHTML com o novo valor do contador. O atributo innerHTML altera ainda mais o texto que é exibido na interface HTML GUI.

O exemplo de código acima exibe o contador de cliques e o incrementa com um clique de botão. Na maioria dos casos de uso, podemos não aplicar o contador de cliques sempre em um botão. Para torná-lo flexível, teremos que suportar o recurso para outros elementos HTML como div, li etc. Quase todos os elementos HTML têm o evento click com o manipulador de eventos onclick.

Clique no contador em uma div usando JavaScript

Nos jogos, as cenas nem sempre têm um botão para acionar o incremento do contador. Geralmente, pode ser feito de elementos HTML como div. Nesses casos, podemos usar o manipulador de eventos onclick da tag div para capturar o clique e incrementar o valor do contador. Consulte o exemplo de código a seguir.

<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;
}

Você pode observar que neste exemplo usamos div na linha <div onclick="incrementClick()">Click Me</div>. Com esta mudança, o incrementClick() é acionado com um clique do div em vez do botão. O código funcionará bem com tags HTML como <li>, <a>, <div> etc. também. Quase todas as tags HTML que suportam os tratadores de evento onclick podem ser associadas a um ouvinte onclick e trabalhar de forma semelhante.

Clique no contador - a abordagem não obstrutiva

Se implementarmos o contador de cliques com uma abordagem desobstruída em JavaScript, precisaremos remover o manipulador de eventos onclick em HTML e movê-lo para o código JavaScript. A estrutura do código parece um pouco diferente, observe o código de exemplo a seguir.

<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;
}

Aqui, vinculamos os eventos de clique ao código JavaScript. A estrutura permanece a mesma, exceto que usamos um ouvinte onclick para a div Click Me e o botão Reset. Essa ligação ocorre em tempo de execução. E a esse ouvinte de clique, vinculamos nossas funções definidas. Portanto, o código é semelhante e não tem muitas alterações.

Observações

A diferença entre a abordagem desobstruída é que vinculamos o ouvinte onclick ao código javascript em vez de fazê-lo no HTML. Será difícil perceber apenas a partir do HTML se o botão ou div está atribuído a um manipulador de eventos onclick.

Com esta abordagem, o código parece mais limpo, pois todos os eventos onclick são vinculados e tratados no JavaScript. Ele mantém o HTML limpo com a marcação, pois nenhum código JavaScript se intromete no HTML.

O código não funcionará se não definirmos o ouvinte onclick na função window.onload. O código document.getElementById("click-div") retornará null, pois não será capaz de localizar o elemento HTML. A função wonderow.onload é acionada assim que a janela é carregada e o DOM está pronto. Portanto, colocar o código dentro do bloco window.onload garante que o elemento HTML seja carregado e possa ser consultado com a função document.getElementById() do JavaScript.