dblclickイベント:マウスがダブルクリックされたとき

dblclick イベントはマウスのカーソルが要素の上にある状態で、マウスが極めて短い間隔で二回クリックされた時に発生するイベントです。 ondblclick 属性または ondblclick プロパティに対してイベントハンドラを設定したり、 addEventListener メソッドの引数として dblclick を指定してイベントリスナーを登録できます。ここでは JavaScript を使って dblclick イベントが発生した場合の処理を記述する方法について解説します。

(Last modified: )

dblclickイベントの使い方

dblclick イベントはマウスのカーソルが要素の上にある状態で、マウスが極めて短い間隔で二回クリックされた時に発生するイベントです。 Element オブジェクトで発生します。

イベントの種類 : MouseEvent
バブリングの可否 : 可能
キャンセルの可否 : 可能

※ バブリングについては「イベントの伝搬(キャプチャリングとバブリング)」、キャンセルについては「イベントに対するデフォルトの動作をキャンセルする」を参照されてください。

要素の属性値にイベントハンドラを登録する場合は ondblclick 属性を使用します。

ondblclick 属性
<input type="button" value="button" ondblclick="buttonDoubleclick()">

<script>
function buttonDoubleclick(){
    alert('Double Click');
}
</script>

DOM を使って取得した要素のプロパティにイベントハンドラを登録する場合は ondblclick プロパティを使用します。プロパティを使用する場合は、無名関数またはアロー関数式を使って記述することもできます。(詳しくは「イベントハンドラを無名関数やアロー関数を使って記述する」を参照されてください)。

ondblclick プロパティ
<input type="button" value="button" id="xxx">

<script>
function butotnDoubleclick(){
    alert('Double Click');
}

let button = document.getElementById('xxx');
button.ondblclick = butotnDoubleclick;
</script>

addEventListener メソッドを使ってイベントリスナーを登録する場合は、 1 番目の引数に 'dblclick' を指定してください。 addEventListener メソッドを使用する場合は、無名関数またはアロー関数式を使って記述することもできます。(詳しくは「addEventListenerメソッドを使ってイベントリスナーを登録する」を参照されてください)。

addEventListener メソッド
<input type="button" value="button" id="xxx">

<script>
function butotnDoubleclick(){
    alert('Double Click');
}

let button = document.getElementById('xxx');
button.addEventListener('dblclick', butotnDoubleclick);
</script>

要素に対してプロパティへイベントハンドラを登録した場合と、 addEventListener メソッドを使ってイベントリスナーを登録した場合、イベントが発生してイベントハンドラやイベントリスナーが呼び出されるとき、引数として発生したイベントに関する情報が含まれる Event オブジェクトが渡されてきます。 dblclick イベントの場合は Event オブジェクトを継承した MouseEvent オブジェクトが渡されてきます。

<input type="button" value="button" id="xxx">

<script>
function butotnDoubleclick(event){
    console.log(event);
}

let button = document.getElementById('xxx');
button.addEventListener('dblclick', butotnDoubleclick);
</script>

イベントハンドラやイベントリスナーの中で渡されてきた MouseEvent オブジェクトのプロパティなどを参照することで、発生したイベントに関する情報を参照できます。

※ MouseEvent オブジェクトからどのようなマウスに関する情報を取得できるのかについては「MouseEventで取得できる座標情報とキー情報」を参照されてください。

サンプルコード

次のサンプルを見てください。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>サンプル</title>
</head>
<body>

<p>ボタンをクリックしてください。</p>

<input type="button" value="button" id="xxx">

<script>
function butotnDoubleclick(){
    alert('Double Click');
}

let button = document.getElementById('xxx');
button.addEventListener('dblclick', butotnDoubleclick);
</script>

</body>
</html>

画面に表示されている input 要素を連続して二回クリックすると、アラートが表示されます。

dblclickイベントの使い方(1)

clickイベントとdblclickイベントの関係

click イベントと dblclick イベントは共にマウスがクリックされたときに発生するイベントです。他にも同じようなイベントとしてマウスが押された時に発生する mousudown イベントと、マウスが離された時に発生する mouseup イベントがあります。

同じ要素に対して click イベントと dblclick イベントのイベントリスナーを登録した上でマウスを短い間隔でクリックすると、 click イベントが 2 回発生したあとで dblclick イベントが発生します。

サンプルコード

次のサンプルを見てください。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>サンプル</title>
</head>
<body>

<p>ボタンをクリックしてください。</p>

<input type="button" value="button" id="btn">

<script>
let button = document.getElementById('btn');

button.addEventListener('click', function(){
    console.log('Click');
});

button.addEventListener('dblclick', function(){
    console.log('Double Click');
});
</script>

</body>
</html>

input 要素には click イベントと dblclick イベントのイベントリスナーが登録されています。画面に表示されている input 要素を短い間隔でクリックすると、 click イベントのイベントリスナーが二回呼び出されたあとに dblclick イベントのイベントリスナが―呼び出されます。

click、mousedown、mouseupイベントが発生する順番(1)

-- --

JavaScript を使って dblclick イベントが発生した場合の処理を記述する方法について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。