【2026年7月最新】HTMLのonclick属性でクリック処理をする完全ガイド|addEventListenerとの使い分けとClaude Code活用
この記事の内容
Webページのボタンをクリックしたら何かが起きる。この仕組みを作るのがonclick属性です。「ボタンを押したらアラートを表示」「クリックで要素の色を変える」「フォームを送信したいが先にバリデーションしたい」——こうした動作はすべてonclickから始まります。
この記事ではHTMLのonclick属性の基本書き方から、関数の定義と呼び出し、this参照、addEventListenerとの使い分け、フォームとの組み合わせ、Claude Codeを使ったコード自動生成まで実例コードとともに解説します。
01 BASIC onclick属性の基本と書き方 HTMLタグにonclickを書いてJavaScriptを実行する
📚 用語解説
onclick属性:HTMLタグに設定するイベントハンドラー属性。ユーザーがその要素をクリック(マウスボタンを押して離す)したときに、属性値として指定したJavaScriptコードを実行する。button・a・div・span・imgなどほぼすべてのHTML要素に設定できる。値として直接JavaScriptの式を書くか、事前に定義した関数名を書く。例: onclick="alert('Hello')" または onclick="myFunction()"。
クリックリンクこのdivをクリックすると背景色が変わります
onclick属性の値は文字列ですが、JavaScriptとして実行されます。クォートには注意が必要です。onclick属性値自体をダブルクォート(")で囲んでいる場合、JavaScriptの文字列はシングルクォート('')を使います。逆に属性値をシングルクォートで囲む場合は内部にダブルクォートを使えます。
マウスボタンを
押して離す
属性値をJavaScript
として実行
アラート表示・
DOM変更など
ユーザーに
フィードバック
02 FUNCTION 関数を定義してonclickから呼び出す HTMLとJavaScriptを分離して管理しやすいコードにする
onclick関数呼び出し
| 書き方 | メリット | デメリット |
|---|---|---|
| onclick="alert('Hello')" (直接記述) | 手軽・短いコードに向く | HTMLが長くなる・再利用不可 |
| onclick="myFunc()" (関数呼び出し) | 再利用可能・HTMLとJSを分離 | 関数定義が必要 |
| addEventListener (後述) | HTML不変・複数リスナー可 | JavaScriptの記述量が増える |
03 THIS thisでクリックした要素自身を参照する クリックされたボタンのtext・属性・スタイルを取得・変更する
📚 用語解説
thisキーワード(onclick文脈):onclick属性の値(JavaScriptコード)の中でthisを使うと、その属性が設定されたHTML要素(クリックされた要素自身)を参照できる。例: onclick="this.style.color='red'"とすると、クリックした要素の文字色が赤になる。関数に渡す場合はonclick="changeStyle(this)"とthisを引数として渡す。なお、onclick属性から関数を呼び出した場合に関数内でthisを使うと異なるオブジェクトを指すことがあるため、this参照が必要な場合は引数として渡すのが確実。
このカードを閉じる
04 MULTIPLE 複数の関数をonclickから実行する セミコロン区切りと組み合わせ関数の2パターン
05 EVENT_LISTENER addEventListenerとの使い分け onclick属性とaddEventListenerを選ぶ判断基準
📚 用語解説
addEventListener:JavaScriptでHTML要素にイベントリスナーを登録するメソッド。element.addEventListener('click', 関数名)のように、第1引数にイベント名('click')、第2引数にコールバック関数を指定する。同一の要素に同じイベントで複数のリスナーを登録できる点がonclick属性と大きく異なる。onClick属性はHTML側からJSを呼ぶのに対し、addEventListenerはJavaScript側から要素を取得してリスナーを追加する(HTML側を変更しない)。
- アイテム1
- アイテム2
| 比較軸 | onclick属性 | addEventListener |
|---|---|---|
| 複数リスナー | 1つのみ(後書きで上書き) | 何個でも追加可能 |
| HTMLからの分離 | HTMLにJSが混在する | HTMLを変更せずJSだけで登録 |
| 動的生成要素への対応 | 直接設定が必要 | 親要素への委譲が容易 |
| 取り外し(removeEventListener) | 不可(上書きのみ) | 可能(リスナー関数を渡す) |
| 適した用途 | 小規模・プロトタイプ・1処理のみ | 中〜大規模・複数リスナー・動的 |
小規模・1処理
HTMLに直書き
HTMLとJSを分離
再利用性向上
中〜大規模
複数リスナー対応
06 FORM フォームのsubmitとpreventDefaultの組み合わせ クリックでフォーム送信をキャンセルしてバリデーションを行う
📚 用語解説
preventDefault():イベントオブジェクトのメソッド。クリックイベントなどのデフォルト動作(aタグのページ遷移、formのsubmitなど)をキャンセルする。onclick属性内では event.preventDefault() のように使う。onclick属性のreturn false; も同様の効果があるが、addEventListenerと組み合わせる場合はpreventDefault()を使うのが正しい方法。フォームバリデーション(送信前にエラーチェック)や確認ダイアログの実装でよく使われる。
onclick属性でreturn false;を使うとevent.preventDefault()とevent.stopPropagation()の両方が実行されます。aタグのページ遷移やフォームsubmitをキャンセルしたいだけなら return false; または event.preventDefault(); のどちらでも動作しますが、addEventListenerと組み合わせる場合は必ずevent.preventDefault()を使ってください。return false; はaddEventListenerのコールバック内では効果がありません。
07 TROUBLESHOOT よくあるエラーとトラブルシューティング onclick属性が動かない原因パターンと対処法
📚 用語解説
イベントバブリング:クリックイベントは発生した要素から親要素・祖先要素へと伝播(バブリング)していく。例えば、div内のbuttonをクリックすると、buttonのonclickが実行された後にdivのonclickも実行される。これが意図しない動作の原因になることがある。伝播を止めるにはevent.stopPropagation()を使う。
08 AI_ASSIST Claude CodeでonclickのJavaScript処理を自動生成する 「このボタンを押したら〇〇する」と伝えるだけでコードが完成
📚 用語解説
イベントオブジェクト(Event Object):onclick属性やaddEventListenerのコールバック関数に自動的に渡される引数。click・mousemove・keydownなどのイベント情報を含む。onclick属性のJSコードではeventという名前で参照できる。主なプロパティ: event.target(クリックされた要素)、event.currentTarget(リスナーが設定された要素)、event.clientX/clientY(クリック位置の座標)、event.shiftKey(Shiftキーが押されているか)など。
Claude Codeを使えば、「このボタンをクリックしたら〇〇してほしい」と日本語で伝えるだけで、onclick属性の設定からJavaScript関数の定義まで完成したHTMLコードが生成されます。
| やりたいこと | Claude Codeへの指示例 |
|---|---|
| クリックでメッセージ表示 | 「HTMLのbuttonをクリックしたらアラートで'送信完了!'と表示するonclick処理を書いて。」 |
| トグルボタン | 「ボタンをクリックするたびにON/OFFの状態が切り替わるトグルボタンをHTMLとJavaScriptで作って。」 |
| フォームバリデーション | 「名前・メールのフォームで、送信ボタンをクリックしたとき未入力ならエラー表示、入力済みなら送信するバリデーション処理をonclick属性で実装して。」 |
| 複数ボタンの排他選択 | 「複数のボタンがあって1つだけ選択状態(背景を青)にする排他的ハイライト処理をaddEventListenerで書いて。」 |
onclickのイベントオブジェクトを使うと、クリックした位置の座標(clientX/clientY)やShiftキー・Ctrlキーが押されていたか(shiftKey/ctrlKey)も取得できます。
<div onclick="showClickInfo(event)" style="width:300px;height:150px;border:2px dashed #ccc;cursor:crosshair;display:flex;align-items:center;justify-content:center;">
クリックしてみてください
</div>
<p id="info" style="font-family:monospace;"></p>
<script>
function showClickInfo(event) {
const info = document.getElementById('info');
info.textContent =
'X: ' + event.clientX + ', Y: ' + event.clientY +
' | Shift: ' + event.shiftKey +
' | Ctrl: ' + event.ctrlKey;
}
</script>
Shiftキーを押しながらクリック(Shift+クリック)で挙動を変えたい場合などに使います。event引数はonclick属性のJSコードで自動的に参照できます。
📚 用語解説
イベント委譲(Event Delegation):個々の子要素にonclickを設定するのではなく、親要素1つにaddEventListenerを設定し、event.targetで実際にクリックされた子要素を判定する設計パターン。動的にli要素が追加されるリストなど、要素が後から増える場合でもリスナーを再登録せずに対応できる。大量の要素に個別にonclickを設定するよりメモリ効率も良い。
09 CONCLUSION まとめ:HTMLのonclick属性の重要ポイント 基本・this参照・addEventListener使い分けのポイント整理
WebページのJS処理をもっとスピードアップしたい方へ
onclick処理に限らず、WebページのインタラクションやフォームバリデーションをClaude Codeで自動生成すると開発速度が大幅に向上します。
AI鬼管理では、Web業務の自動化・効率化についての無料相談を受け付けています。
NEXT STEP
この記事の内容を、あなたのビジネスで
実践してみませんか?
AI活用を自社で回せるようになりたい方へ
AI鬼管理
Claude Code・Cowork導入支援から業務設計・社内浸透まで実践ベースで伴走。「自社で回せる組織」を90日で作る経営者向けトレーニング。
よくある質問
Q. HTMLのonclick属性の使い方を教えてください。
A. onclick="実行したいJavaScript"という形でHTMLタグに書きます。例: 。関数を呼び出す場合はonclick="functionName()"と書いて、<script>タグ内で関数を定義します。onclick属性はbutton・a・div・spanなどほぼすべてのHTML要素に使えます。
Q. onclickで関数に引数を渡す方法は?
A. onclick="functionName(引数)"のように関数呼び出しに引数を含めます。文字列はシングルクォートで囲みます: onclick="greet('田中')". 数値はそのままonclick="calc(10, 20)". クリックされた要素自身を渡す場合はonclick="func(this)"とthisを使います。
Q. onclickとaddEventListenerはどちらを使うべきですか?
A. 小規模な処理や学習目的ならonclick属性が手軽です。中〜大規模のWebアプリや、同一要素に複数のクリックリスナーが必要な場合、HTMLからJavaScriptを完全に分離したい場合はaddEventListenerが適しています。「scriptをbodyの末尾に置けばDOMが先に読み込まれるのでaddEventListenerでも問題ない」という状況が多いため、規模が大きくなったらaddEventListenerへの移行を検討するとよいでしょう。
Q. onclickでフォームのsubmitをキャンセルするには?
A. submitボタンのonclick属性でreturn false;を使う方法が最もシンプルです: onclick="return validate()". validate()関数の中でreturn false;を返すとフォーム送信がキャンセルされ、return true;を返すと送信されます。addEventListenerを使う場合はevent.preventDefault()で送信をキャンセルします。
Q. onclick属性が動かない・クリックしても何も起きない原因は?
A. 主な原因は4つです。①関数名のタイポ(スペルミス)—コンソールにReferenceErrorが出る ②文字列クォートの衝突—onclick="alert("text")"のようにダブルクォートが衝突している ③scriptタグの位置—headに書いた場合DOMより先に実行されて要素が見つからないことがある(bodyの末尾に置く) ④CSSのpointer-events: none—スタイルでクリックが無効化されている。F12を押してコンソールタブのエラーメッセージを確認するのが最短の診断方法です。
Q. Claude CodeでonclickのJavaScript処理を作ってもらうには?
A. 「どの要素を」「クリックしたら」「何をする」を日本語で伝えるだけで動作するコードが生成されます。例: 「HTMLのボタンをクリックしたら、div#messageにテキストを表示して3秒後に消えるようにするJavaScriptをonclick属性で実装してください。」という形で指示すると、HTML・CSS・JavaScriptがセットで返ってきます。
Claude Codeで業務自動化を90日で叩き込む
経営者向けの伴走型パーソナルトレーニング
Claude Code を業務に落とし込む
専門研修コース一覧
受講者本人の業務を題材に、「使いこなせる」状態になるまで伴走する研修プログラム。1対1特化型・ハンズオン・法人講座の3コースを展開中。業務特化・実装まで踏み込むタイプのClaude Code研修です。
研修コース一覧を見る →AI鬼管理へのお問い合わせ
この記事を読んで気になった方へ。
AI鬼管理の専門スタッフが、御社に最適な
業務自動化プランを無料でご提案します。


