- はじめに
- JavaScriptイベントとは
- JavaScriptイベント一覧
- イベントのカスタマイズ
- イベント1:onclick
- イベント2:ondblclick
- イベント3:onmousedown
- イベント4:onmouseup
- イベント5:onmousemove
- イベント6:onmouseover
- イベント7:onmouseout
- イベント8:onmouseenter
- イベント9:onmouseleave
- イベント10:onkeydown
- イベント11:onkeyup
- イベント12:onkeypress
- イベント13:onfocus
- イベント14:onblur
- イベント15:onchange
- イベント16:onsubmit
- イベント17:onreset
- イベント18:onload
- イベント19:onunload
- イベント20:onresize
- イベント21:onscroll
- イベント22:ondragstart
- イベント23:ondragend
- イベント24:ondragenter
- イベント25:ondragleave
- イベント26:ondragover
- イベント27:ondrop
- イベント28:oncontextmenu
- イベント29:onwheel
- イベント30:onbeforeunload
- 応用例とサンプルコード
- まとめ
- 関連記事
はじめに
JavaScriptのイベントは、クリック、入力、スクロール、読み込みなどをきっかけに処理を動かす仕組みです。addEventListener()、Event、event.target、preventDefault()の関係を押さえると、コードの見通しが変わります。
このページでは、JavaScriptイベント一覧と30個の例を、整理します。onclick属性とaddEventListener()は用途が異なるため、違いも整理するのが基本です。
- HTML Living Standard / ECMAScript 2024相当の構文
- Google Chrome 126、Firefox 127、Safari 17系で利用される標準的なDOMイベントAPIを前提
- JavaScriptイベントの基本構造と
EventTargetの考え方 - クリック、キー入力、フォーム、読み込み、ドラッグ系イベントの一覧
onclick属性とaddEventListener()の使い分けpreventDefault()やdataTransferを使うカスタマイズ- ドラッグ&ドロップ、スライドショー、リアルタイム検索の組み合わせ方
JavaScriptイベントとは
結論から言えば、JavaScriptイベントは「何かが起きたときに関数を呼ぶ」入口です。たとえば<button>が押されるとclickが発生し、登録された関数が実行対象になります。
その仕組みはDOMのEventTargetに支えられており、ElementやDocumentなどがイベントを受け取ります。公式ドキュメントによれば、MDNのaddEventListener()解説では、対象に届いたイベントで関数を呼ぶメソッドとされているのが目安です。
イベントオブジェクトにはtype、target、keyなどの情報が入りますし、ここがポイントです。その値で対象要素や入力内容を切り替えられます。
配列処理も押さえると、イベント後の一覧操作が読みやすくなるのがポイントです。JavaScriptのforEachでreturnを活用する6つのテクニックやforEach・mapの使い分け術10選が参考になります。
JavaScriptイベント一覧
| 分類 | イベント名 | 発生条件 | 主な用途 |
|---|---|---|---|
| マウス | click | クリック | ボタン操作 |
| マウス | dblclick | ダブルクリック | 詳細表示 |
| マウス | mousemove | ポインター移動 | 座標追跡 |
| マウス | mouseenter/mouseleave | 要素単位の出入り | 子要素の影響を避ける処理 |
| キー | keydown/keyup | 押下と解放 | ショートカット |
| フォーム | input | 入力のたび | リアルタイム検索 |
| フォーム | change | 値の確定変更 | 選択値の反映 |
| フォーム | submit/reset | 送信とリセット | 検証と初期化 |
| フォーカス | focus/blur | 取得と喪失 | 入力補助 |
| ページ | load | 読み込み完了 | 初期化 |
| ページ | beforeunload | 離脱直前 | 未保存警告 |
| ページ | resize/scroll | サイズ変更とスクロール | レイアウト更新 |
| ドラッグ | dragstart/dragend | 開始と終了 | 移動状態の管理 |
| ドラッグ | dragover/drop | 領域上とドロップ | ドラッグ&ドロップ |
| その他 | contextmenu | 右クリック | 独自メニュー |
イベントハンドラー
イベントハンドラー属性は、HTMLへ直接処理を書く方法です。短い例では明確ですが、処理が増えるとHTMLとscriptの境界が曖昧になります。
結果: 期待される表示は、ボタンのクリックで「クリックされました!」というアラートが開く動作です。onclick属性に短い処理を直接書いています。
イベントリスナー
イベントリスナーは、JavaScript側で対象要素を取得し、addEventListener()にイベント名と関数を渡す方法です。処理を外部ファイルへ移しやすい形にできるのが一般的です。
結果: 期待される表示は、ボタンのクリックで同じアラートが開く動作です。HTMLにはidだけを置き、処理は<script>内へ分けています。
一方、リスナーを外す処理では、removeEventListener()に同じ関数参照を渡します。JavaScriptにおけるイベントハンドラを完全ガイドでも、属性方式とリスナー方式の違いを合わせて読むと理解しやすいでしょう。
イベントのカスタマイズ
イベントのカスタマイズでは、条件分岐、既定動作の抑制、伝播を組み合わせますし、ここがポイントです。たとえばkeydownでevent.keyを見れば、Enterキーだけに反応できるのが基本です。
結果: 期待される出力は、Enterキーを押したときだけアラートが開く動作です。event.keyがEnterと一致する場合に処理を進めています。
これに加えて、送信を止めるならpreventDefault()、伝播を止めるならstopPropagation()を使いるのが現実的です。ただし、伝播の停止は必要な範囲に限定します。
keypressは古い教材で見かけますが、現在の入力処理ではkeydown、keyup、inputを選ぶ場面が多くなるのが目安です。文字入力後の値を扱うならinputが自然です。仕様の全体像は、MDNのEventインターフェイスで確認できると整理できます。特にtargetとcurrentTargetの違いは、イベント委任でつまずきやすい点です。
30個のイベントサンプルは、短いHTMLで発火タイミングを確認する教材として使えます。ブラウザ制約があるイベントでは注記も合わせて確認するのがポイントです。
イベント1:onclick
結果: 期待される表示は、条件に応じてアラートが開く動作です。
イベント2:ondblclick
結果: 期待される表示は、条件に応じてアラートが開く動作です。
イベント3:onmousedown
結果: 期待される表示は、条件に応じてアラートが開く動作です。
イベント4:onmouseup
結果: 期待される表示は、条件に応じてアラートが開く動作です。
イベント5:onmousemove
結果: 期待される表示は、条件に応じてアラートが開く動作です。
イベント6:onmouseover
結果: 期待される表示は、条件に応じてアラートが開く動作です。
イベント7:onmouseout
結果: 期待される表示は、条件に応じてアラートが開く動作です。
イベント8:onmouseenter
結果: 期待される表示は、条件に応じてアラートが開く動作です。
イベント9:onmouseleave
結果: 期待される表示は、条件に応じてアラートが開く動作です。
イベント10:onkeydown
結果: 期待される表示は、条件に応じてアラートが開く動作です。
イベント11:onkeyup
結果: 期待される表示は、条件に応じてアラートが開く動作です。
イベント12:onkeypress
結果: 期待される表示は、条件に応じてアラートが開く動作です。
イベント13:onfocus
結果: 期待される表示は、条件に応じてアラートが開く動作です。
イベント14:onblur
結果: 期待される表示は、条件に応じてアラートが開く動作です。
イベント15:onchange
結果: 期待される表示は、条件に応じてアラートが開く動作です。
イベント16:onsubmit
結果: 期待される表示は、条件に応じてアラートが開く動作です。
イベント17:onreset
結果: 期待される表示は、条件に応じてアラートが開く動作です。
イベント18:onload
結果: 期待される表示は、条件に応じてアラートが開く動作です。
イベント19:onunload
結果: 期待される表示は、条件に応じてアラートが開く動作です。
イベント20:onresize
結果: 期待される表示は、条件に応じてアラートが開く動作です。
イベント21:onscroll
結果: 期待される表示は、条件に応じてアラートが開く動作です。
イベント22:ondragstart
結果: 期待される表示は、条件に応じてアラートが開く動作です。
イベント23:ondragend
結果: 期待される表示は、条件に応じてアラートが開く動作です。
イベント24:ondragenter
結果: 期待される表示は、条件に応じてアラートが開く動作です。
イベント25:ondragleave
結果: 期待される表示は、条件に応じてアラートが開く動作です。
イベント26:ondragover
結果: 期待される表示は、条件に応じてアラートが開く動作です。
イベント27:ondrop
結果: 期待される表示は、条件に応じてアラートが開く動作です。
イベント28:oncontextmenu
結果: 期待される表示は、条件に応じてアラートが開く動作です。
イベント29:onwheel
結果: 期待される表示は、条件に応じてアラートが開く動作です。
イベント30:onbeforeunload
結果: 期待される表示は、条件に応じてアラートが開く動作です。
公式ドキュメントによれば、MDNのbeforeunloadイベントは一部環境で制約があります。保存前の警告に限定し、通常のナビゲーション制御には使いすぎない設計が合います。
応用例とサンプルコード
応用例では、単体のイベントを組み合わせてUIの流れを作りますが、これは押さえたい点です。ドラッグ&ドロップ、スライドショー、リアルタイム検索で一覧の知識を画面部品へつなげますが、これは押さえたい点です。
応用例1:ドラッグ&ドロップ機能
ドラッグ&ドロップでは、dragstartで対象を記録し、dragoverでドロップ許可、dropで配置を確定します。この流れではdataTransferとappendChild()が中心になると理解できます。
結果: 期待される表示は、水色の要素を点線の領域へドラッグして移動できる画面です。setData()でIDを保存し、getData()で取り出してDOMへ追加しています。
応用例2:スライドショー
スライドショーでは、clickを起点に現在位置を増減し、表示する画像だけdisplayを切り替えます。画像一覧を配列のように扱うため、getElementsByClassName()で取得した要素群を順番に処理すると覚えるとよいでしょう。
結果: 期待される表示は、前へボタンと次へボタンで表示画像が切り替わる画面です。slideIndexが範囲外になった場合は先頭または末尾へ戻ります。
応用例3:リアルタイム検索
リアルタイム検索では、inputが発生するたびに入力値を読み、<li>のテキストと照合します。小さな一覧なら単純なループで十分ですが、大きなデータでは検索対象を絞る工夫が必要になると考えられますし、これが一つの目安です。
結果: 期待される表示は、検索欄へ文字を入力すると一致しないリスト項目が非表示になる動作です。toUpperCase()で大文字小文字の差を吸収し、style.displayで表示を切り替えています。
clickだけで複数の子要素を扱えます。動的に追加されるボタンや一覧項目では、event.targetを見て処理対象を判定する方法がよく使われますし、これが一つの目安です。まとめ
JavaScriptイベントは、ブラウザ上の操作や状態変化を処理へ結び付ける仕組みです。クリック、キー入力、フォーム、読み込み、ドラッグ、スクロールの一覧を分類しておくと、作りたいUIから適切なイベントを選びやすくなるのが一般的です。
その中心になるのはaddEventListener()、Event、preventDefault()、event.targetです。HTML属性のonclickは短い学習例に向きますが、処理を増やす画面ではJavaScript側でリスナーを登録する構成が読みやすいと言えます。
ただし、keypress、unload、beforeunloadのように現在のブラウザで扱いに注意が必要なイベントもあると言えるでしょう。公式ドキュメントを確認し、目的に合う代替を選ぶ姿勢が保守性につながるでしょう。
これらのサンプルを土台にすると、ボタン、フォーム、一覧検索、ドラッグ操作を組み合わせたインタラクティブなWebページを設計できます。イベントの粒度を小さく保ち、関数名と役割をそろえることが読みやすいコードへの近道です。
関連するUIなら、拡張子の扱いやカレンダー作成もイベント処理と組み合わせやすいテーマです。
関連記事
- JavaScriptのforEachでreturnを活用する6つのテクニック
- JavaScriptエンジニア必見!forEach・mapの”目からウロコ”な使い分け術10選
- JavaScriptにおけるイベントハンドラを完全ガイド!20選の実践サンプルコード付き
- JavaScriptで拡張子を活用する方法12選!初心者でも簡単にできる方法を紹介
- JavaScriptでカレンダーを作成!サンプルコード10選で簡単理解
※本記事は実在のエンジニア複数名で構成される Japanシーモア編集部が、AI支援を活用して作成・校正・公開しています。


