Webブラウザのイベント処理1
【開発環境】
OS;Window10
Webブラウザ:Google Chrome
テキストエディタ:Brackets
---イベント処理の基礎知識---
【イベントと、イベントハンドラ】
イベントとは→ユーザがボタンをクリックしたり、テキストボックスに文字を入れて【Enter】キーをおした時に、ブラウザから送出されるメッセージのようなものです。
イベントハンドラ→発生したイベントを捕まえて、それに対して何らかの処理を行うプログラムの事。
![](https://blogimg.goo.ne.jp/user_image/62/25/733aa70a7a58875b29aebcbe38681693.jpg)
・イベント処理の3つの方法
1)HTMLタグの属性で設定する
2)エレメントオブジェクトのプロパティとして設定する
3)イベントリスナーで設定する
◆HTMLタグの属性で処理を設定する
ア)ボタンのクリックを捕まえる
・ボタンの設定
<input type="button" value="クリックして" id="myBtn"
・イベントハンドラの設定
onclick="alert('クリックされました'); console.log('クリックされました')">
![](https://blogimg.goo.ne.jp/user_image/08/36/213fc1762104928ee77e7c38ea1aa5ce.jpg)
「クリック」ボタンをクリックする→アラートダイアログ表示
![](https://blogimg.goo.ne.jp/user_image/09/ed/2e6144a39d8b18a0e327e104378b0080.jpg)
イ)イベントハンドラを関数に!
例文
![](https://blogimg.goo.ne.jp/user_image/7a/45/a9e582d7b2ef5d7bfca4603a556daadd.jpg)
同じ結果に成る
ウ)イベントが発生したエレメントを調べる→「this」を使う。
・例文
省略
<body>
<input type="button" value="クリックして" id="myBtn" onclick="clickHandler(this)">
<script>
function clickHandler(el) {
alert(el.id + "がクリックされました");
}
</script>
</body>
実行
・「クリック」ボタンをを押すと、アラートダイアログが表示される
![](https://blogimg.goo.ne.jp/user_image/61/93/27f07d7f8ce81ad1cacae22c9e0f18de.jpg)
◆オブジェクトのプロパティとしてイベントハンドラを設定する
ア)onclickプロパティにコールバック関数を登録
例えば、「myBtn」ボタンを設け、それがクリックされた時に呼び出されるイベントハンドラの関数を登録するには、下記のようにする。
書式
myBtn.onclick = 関数;
例文
![](https://blogimg.goo.ne.jp/user_image/25/e9/2690838c398dbdf844c45f99a650c955.jpg)
var myBtn = document.getElementById("myBtn");→ドキュメント要素を取得している
myBtn.onclick = clickHandler;→関数を登録している
実行する
![](https://blogimg.goo.ne.jp/user_image/5e/2c/3a342fd081eae313d1c26f80cca62f55.jpg)
◆コールバック関数を無名関数にする
無名関数→一度しか呼ばない関数
例文
![](https://blogimg.goo.ne.jp/user_image/4a/a8/da712a65a9eb84643d50bcf8ebbd18b0.jpg)
実行
![](https://blogimg.goo.ne.jp/user_image/4e/c5/5de42653fa26383409792e5a822261a4.jpg)
◆イベントハンドラを削除する
プロパティに代入した後に、イベントハンドラを削除することができる。
element.onclick = null;
◆イベントハンドラとして使用するプロパティ
![](https://blogimg.goo.ne.jp/user_image/01/0b/40147f9f5a449599dff44283babfc6c9.jpg)
◆onloadイベントハンドラ
HTMLドキュメントの読み込みが完了したときのイベントを呼び込む、イベントハンドラ
例文
![](https://blogimg.goo.ne.jp/user_image/3b/14/924d0788aeaf639b8ed59f09991fe714.jpg)
実行
![](https://blogimg.goo.ne.jp/user_image/50/74/0b7f6db5449f8594e56f1276b4fa4391.jpg)
・onloadはheadエレメントにプログラムを記述する時に必要
headエレメントに書くと、エラーになり、動作しない。
なぜなら、すべてのエレメントが読み込まれてないからである。
![](https://blogimg.goo.ne.jp/user_image/62/09/6b5e48b4ddf264a6d05f939cbabf19b2.jpg)
改造後→windowのonloadイベンドハンドラに処理を記述すれば良い。そうすることで、HTMLドキメントのロード完了待ってから処理を実行できる。
![](https://blogimg.goo.ne.jp/user_image/37/3d/dd71432a4477f2d949afa7a4104fa1dc.jpg)
表示
![](https://blogimg.goo.ne.jp/user_image/00/8c/b8024cbca73ba89f4e21adc5c5cb01df.jpg)