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

HTML DOM UiEvent detailプロパティとは?連続クリック数の取得方法を実例付きで解説

HTML DOM の UiEvent detail プロパティは、ユーザーが短時間に連続して行ったクリックの回数に対応する数値を返します。ダブルクリックやトリプルクリックなど、続けてクリックされた回数を取得したい場面で活躍するプロパティです。

注意: ondblclick イベントが発生した場合、戻り値は「2」になります。一方、onmouseover や onmouseout イベントが発生した場合、戻り値は常に「0」です。

構文

detail プロパティの構文は以下のとおりです。

連続クリック数を取得する場合:

event.detail

UiEvent detail プロパティの使用例

次の例では、黄色い円形の div 要素を連続クリックすると、そのクリック回数が「現在のスコア」として表示され、これまでの最高回数が「ハイスコア」として記録されるミニゲーム風のデモを紹介します。

サンプルコード

<!DOCTYPE html>
<html>
<head>
<title>HTML DOM UiEvent detail</title>
<style>
   form {
      width:70%;
      margin: 0 auto;
      text-align: center;
   }
   * {
      padding: 2px;
      margin:5px;
   }
   input[type="button"] {
      border-radius: 10px;
   }
   #playArea {
      display: inline-block;
      border-radius: 50%;
      background-color: #DC3545;
      width: 50px;
      height: 50px;
      border: 3px solid #AC3509;
   }
   #clickOn {
      border: 3px solid #F0FF33;
      margin: 15px auto;
      border-radius: 50%;
      background-color: #FFF933;
      width: 10px;
      height: 10px;
   }
   h2 {
      display: inline-block;
   }
</style>
</head>
<body>
   <form>
      <fieldset>
         <legend>HTML-DOM-UiEvent-detail</legend>
         <h2 id="highScore">High Score: 0</h2>
         <h2 id="currScore">Current Score: 0</h2><br>
         <div id="playArea"><div onclick="getHighScore(event)" id="clickOn"></div></div><br>
      </fieldset>
   </form>
<script>
   var clickOn = document.getElementById("clickOn");
   var playDisplay = document.getElementById("playArea");
   var highScore = document.getElementById("highScore");
   var currScore = document.getElementById("currScore");
   var high = 0, score = 0;
   function getHighScore(event) {
      var score = event.detail;
      currScore.textContent = 'Current Score: '+score;
         if(score > high){
            highScore.textContent = 'High Score: '+score;
            high = score;
         }
   }
</script>
</body>
</html>

コードのポイント

  • 小さな黄色い div 要素(#clickOn)に onclick イベントを設定し、クリック時にイベントオブジェクトを関数へ渡しています。
  • 関数内では event.detail を使って連続クリック数を取得し、「現在のスコア」として画面に反映します。
  • 取得したスコアがこれまでの最高値(high)より大きければ、「ハイスコア」も更新されます。

実行結果

黄色い div 要素をクリックする前の画面:

HTML DOM UiEvent detailプロパティとは?連続クリック数の取得方法を実例付きで解説

黄色い div 要素を連続してクリックした後の画面:

HTML DOM UiEvent detailプロパティとは?連続クリック数の取得方法を実例付きで解説

黄色い div 要素を、前回よりも少ない回数だけ連続クリックした後の画面:

HTML DOM UiEvent detailプロパティとは?連続クリック数の取得方法を実例付きで解説

このように、UiEvent の detail プロパティを使えば、クリックイベントから連続クリック数を簡単に取得でき、ダブルクリック検出やゲームのスコア処理など、さまざまなインタラクティブな機能の実装に応用できます。

  1. HTML DOM offsetWidthプロパティの使い方をわかりやすく解説

    HTML DOM offsetWidthプロパティとは HTML DOMのoffsetWidthプロパティは、要素の実際の表示幅に対応する数値(ピクセル単位の整数)を返します。この幅にはパディング・ボーダー(境界線)・スクロールバーが含まれますが、マージンは含まれません。なお、offsetWidthは読み取り専用のプロパティのため、値を直接代入することはできません。 構文 HTMLElement.offsetWidth 要素が非表示(display: none など)の状態にある場合は、0 が返されます。 関連プロパティとの違い offsetWidth: パディング+ボーダー+スクロールバー

  2. HTML DOM UiEvent detailプロパティとは?連続クリック数の取得方法を実例付きで解説

    HTML DOM の UiEvent detail プロパティは、ユーザーが短時間に連続して行ったクリックの回数に対応する数値を返します。ダブルクリックやトリプルクリックなど、続けてクリックされた回数を取得したい場面で活躍するプロパティです。注意: ondblclick イベントが発生した場合、戻り値は「2」になります。一方、onmouseover や onmouseout イベントが発生した場合、戻り値は常に「0」です。構文detail プロパティの構文は以下のとおりです。連続クリック数を取得する場合:event.detailUiEvent detail プロパティの使用例次の例では、黄色い