JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

バニラJavaScriptで要素のクリック数をカウントする方法

要素のクリック数をカウントするのは、JavaScriptで実装できる最もシンプルな処理のひとつです。必要なのは、クリック数を保存するための変数を宣言し、対象となる要素にaddEventListenerメソッドを設定することだけです。

ここでは、ホームボタンのようなボタン要素のクリック数を追跡したい場合を例に、具体的な手順を見ていきましょう。

HTMLマークアップ

まず、HTMLのbutton要素を作成し、button-homeというクラス名を付けます。

<button class="button-home">Home</button>

JavaScriptコード

次に、以下のコードをJavaScriptファイルに追加してください(コードの詳細は後ほど解説します)。

let buttonHome = document.querySelector(".button-home")
let CountButtonHomeClicks = 0

buttonHome.addEventListener("click", function() {
  CountButtonHomeClicks += 1
  console.log(CountButtonHomeClicks)
})

実行結果は以下のようになります。

バニラJavaScriptで要素のクリック数をカウントする方法

上のボタン要素には、押しやすくするために少しCSSスタイルを追加しています。

JavaScriptコードの解説

  • まず、querySelector()メソッドを使ってbutton要素のbutton-homeクラスを選択し、その結果をbuttonHome変数に代入します。
  • 次に、クリック数を保存するためのCountButtonHomeClicks変数を宣言し、初期値として0を設定します。
  • 続いて、addEventListener()メソッドを使って、buttonHomeにイベントリスナーを登録します。
  • イベントリスナーの中では、監視するイベントとして'click'を指定し、クリックイベントが発生するたびに実行されるfunction()を定義しています。
  • 関数内では、クリックイベントが発生するたびにCountButtonHomeClicks変数に1を加算します。加算には+=(プラスイコール)演算子を使用します。
  • 最後に、console.log()を使って、CountButtonHomeClicks変数の値をクリックごとに出力します。

これで、特定の要素のクリック数をカウントする方法がわかりました。

覚えておくと良いポイント

  • 上記のコードはES6の構文を使用しています。ES5環境で使う場合は、letvarに置き換えるだけで同じように動作します。
  • この例で使用している関数は、名前を持たないことから匿名関数(無名関数)と呼ばれます。関数式関数宣言とは異なる点に注意しましょう。
  • 匿名関数は再利用できません。複数のイベントで同じ関数を呼び出したい場合は、関数式または関数宣言を使用してください。

上記のコード一式は、CodePenでも確認できます。

  1. 【初心者向け】JavaScriptでカウントダウンタイマーを作成する方法を解説

    Webサイトでは、イベント開始までの残り時間やセールの締め切り表示など、カウントダウンタイマーを設置したい場面は数多くあります。JavaScriptでは、DateオブジェクトとsetInterval()メソッドを組み合わせるだけで、誰でも簡単にカウントダウンタイマーを実装できます。 ここでは、指定した日時までの残り時間を「日・時・分・秒」の形式でリアルタイムに表示するサンプルコードを紹介します。 サンプルコード <!DOCTYPE html> <html> <head> <meta name="viewport" content=&

  2. JavaScriptで定数を作成する方法とは?constキーワードの使い方を実例付きで解説

    JavaScriptで定数を作成するには、constキーワードを使用します。constで宣言された変数は、一度値を代入すると後から再代入することができません。もし再代入を試みると、TypeErrorエラーが発生します。定数作成のコード例以下は、JavaScriptでconstを使って定数を作成し、その値を変更しようとしたときの挙動を確認できるサンプルコードです。サンプルコード<!DOCTYPE html> <html> <head> <style> body { font-family: Segoe UI, Tahoma,