職案人

求職・歴史・仏教などについて掲載するつもりだが、自分の思いつきが多いブログだよ。適当に付き合って下さい。

JS--要素のプロパティにイベントハンドラを登録する

2024年08月18日 | JavaScript

要素のプロパティにイベントハンドラを登録する

【開発環境】
OS:Win11(64ビット)
VSCode1.72.2、
クロム

■ DOM を使って取得した要素のプロパティに対してイベントハンドラを登録する方法について解説する。
基本的な使い方は HTML 要素の属性に対していイベントハンドラを登録する方法と似ていますが、 JavaScript のコードのみで実現することが出来る。

【要素オブジェクトのプロパティにイベントハンドラを登録す】
HTML 要素の属性としてイベントハンドラを設定する場合には、要素の属性値に直接イベントハンドラを記述していました。
<input type="button" value="button" onclick="イベントハンドラ"

DOM を使用すると
HTML ページの中の任意の要素を要素オブジェクトとして取得できます。そのあとで、要素オブジェクト(button)のプロパティ(onclick)に対してイベントハンドラを設定します。

HTML コードで記述された input タグには JavaScript のコードが含まれなくなり、イベントの処理は JavaScript のコードの中で完結することができました。

要素オブジェクトにはイベントの種類だけプロパティがあらかじめ用意されており、それぞれのプロパティ名は on + イベント名 となります。例えば click イベントに対しては onclick プロパティ、 mousedown イベントに対しては onmousedown プロパティに対してイベントハンドラを設定します。

サンプルーーHTML要素の属性としてイベントハンドラを設定した場合

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-cale=1.0">
    <title>イベントハンドラのサンプル</title>
</head>
<body>
    <button onclick="alert('ボタンがクリックされました!')">クリックしてね        </button>
</body>
</html>

サンプル--DOMを使ってイベントハンドラを設定する場合

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>プロパティを用いたイベントハンドラのサンプル</title>
</head>

    <button id="myButton">クリックしてね</button>

    <script>
        // ボタン要素を取得
        const button = document.getElementById('myButton');

        // 無名関数のイベントハンドラをプロパティに設定  
        button.onclick = function() {
            alert('ボタンがクリックされました!');
        };
    </script>
</body>
</html>

どちらも、同じ結果になる

【イベントハンドラにコールバック関数を設定する】
HTML 要素の属性としてイベントハンドラを設定した場合は、
実行する JavaScript のコードを記述しましたが、プロパティにイベントハンドラを設定する場合は、イベントが発生した時に呼び出されるコールバック関数を設定します。

サンプル

ブラウザを立ち上げる

「button」をクリックすると、ポンプアップが立ち上がり、時間が表示される。

イベントハンドラを無名関数やアロー関数を使って記述する
イベントハンドラとして登録するコールバック関数は、無名関数を使って記述することもできます。

ブラウザを立ち上げ、交互にボタンを押す

無名関数をクリック

アロー関数をクリック


イベントハンドラを解除する
それぞれの要素オブジェクトにはイベントの種類の数だけプロパティが用意されており、イベントハンドラが登録されていない場合は null が格納されています。

イベントハンドラが登録されたプロパティに対してイベントハンドラを解除するには、プロパティに対して null を代入してください。

・書式:
button.onclick = null;

サンプル

ブラウザを立ち上げる

ボタンをクリックしても、イベントハンドラは起動しない

コールバック関数が呼び出される時にイベントの情報を受け取る
イベントハンドラとしてコールバック関数を登録した場合(無名関数やアロー関数式でも同じです)、イベントが発生してコールバック関数が呼ばれるときに発生したイベントに関する情報が格納された Event オブジェクトが引数として渡されてきます。
イベントに関する情報を関数内で利用する場合は、コールバック関数で引数を記述してください。

サンプル

ブラウザを立ち上げる

クリックすると、表示される。
発生したイベントの種類とイベントが発生した要素の情報をコンソールに出力します。

 

 


コメント (3)    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« JS--イベントハンドラの登録 | トップ |   
最新の画像もっと見る

3 コメント

コメント日が  古い順  |   新しい順
Unknown (iinna)
2024-08-19 06:39:34
イベントハンドラなど難しい言葉が連発されて、タジタジ✨です。
イベントは、探して楽しんでます。パンドラの箱は開けぬよう気をつけてます。

でも、タグの小文字〈 をそのままコスペして使える方法を見つけました。
〈 の部位をfont size
=3 或いは color=blue 等とすればOKです。
お試しください。
返信する
返事 (職案人)
2024-08-19 09:15:03
iinna さんへ
>イベントハンドラなど難しい言葉が連発されて、タジタジ✨です。... への返信
ありがとう。<を小さくすると、ブログが反応するため、わざと、大きくしてます。特殊文字を使っても、一度目なら良いけど、何度も、書き換えるために開くと、<が小さくなり、ブログに反応し、表示されなくなる
返信する
タグをそのまま表示させるテクニック (もののはじめのiina)
2024-08-20 09:41:02
ブログ等にタグが反応しない技をみつけたのです。

よけいなお世話でした 
返信する

コメントを投稿

JavaScript」カテゴリの最新記事