Javascript イベント操作

Javascript イベント操作

1.イベントとは



イベントは、ブラウザーのウィンドウの中で発火されます。そして、その中に属する特定の項目に紐付く傾向 にあります 。これは単一の要素、要素の集合、現在のタブでロードされた HTML 文書、ブラウザー画面全体といったものです。発生するイベントはたくさんの異なる種類があります。例えば下記のようなものです。

 ・ユーザーがある要素の上をマウスでクリックしたり、ある要素の上にカーソルを持ってくる
 ・ユーザーがキーボードのキーを押す
 ・ユーザーがブラウザー画面をリサイズしたり閉じたりする
 ・ウェブページのロードの完了
 ・フォームの送信
 ・ビデオが再生中、停止中、再生が終わった
 ・エラーの発生

MDN Event リファレンスを覗いてみれば、とてもたくさんの応答可能なイベントがあるのが判るでしょう。
と、ここまでがMDNの文章です。※イベントへの入門



簡単なイベントを書いてみよう

分かりやすい例を書いてみます。MDNでは<Body>タグ全体対象にした背景色の切り替えをサンプルにしてしまっているので、Wordpress でそれをやれっていうのがキツかった(笑)ため、部分的なものを作ってみました。

Change Color Area



・HTML

<div id="changeColorArea">Change Color Area</div>
<button id="changeButton">Change color</button>

・JavaScript

const btn = document.getElementById('changeButton');
const result = document.getElementById('changeColorArea');

function random(number) {
  return Math.floor(Math.random() * (number+1));
}

// btn ボタンがクリックされたとき発生するイベント
btn.onclick = function() {
  const rndCol = 'rgb(' 
  + random(255) + ',' 
  + random(255) + ',' 
  + random(255) + ')';

 // 指定ID の <div>タグの色を変える行
  result.style.backgroundColor = rndCol;
}

・CSS

#changeColorArea {
    width: 100%;
    height: 100px;
    border: 1px solid black;
    margin-bottom: 10px;
    display:flex;
    align-items: center;       /* 縦方向 中央 */
    justify-content: center;  /* 横方向 中央 */
    font-size:40px;
}

とりあえず一つ目のイベントは分かりやすく、馴染みのある onclick を使って確認してみました。







2.document とは



document コンストラクターと書かれていたり、ブラウザーに読み込まれたdocument オブジェクトを新たに生成してそのページの内容へのエントリーポイントを提供する、と書かれていたり、異常にややこしく書かれていますが……

つまるところ、これで覚えてればいいようです。


javascript の document オブジェクトは html ドキュメントを表現するオブジェクト です。


要するに、Javascript を使って、HTMLを操作するためにJavascriptを使うときは、
document を使ってHTML情報を取り出すという事が必要になる、という事になります。

Document Object Model と呼ばれ、略してDOMと呼ばれます。

HTMLはHTML文章と呼ばれることもあり、文章=Document。つまりHTML(XMLなども)オブジェクトとして扱い、それを操作するためのモデルです。その操作をすることを DOM API や DOM というように呼びます。

javascript から DOM を介して、HTMLの情報を取得・変更・イベントの登録など、JavaScript で 動的なページを作ることが可能になります。実装した方が理解は早いので、よく使いそうな機能の説明を記載していきます。







3.イベントに使うHTML要素の取得の方法



javaScriptからHTMLの部品を操作するためには、まずHTMLから要素を探し出して部品情報を取得する必要があります。その際のキーとなるのが、HTMLの各要素が持つidやname属性の値、要素に付与されたclass名です。これからご紹介するJavaScriptの特定メソッドの実行により、HTML上からキー値を検索して、HTMLの要素情報を取得することができます。



document.getElementById


HTML要素が持つid値をキーとして、HTML要素を取得することができます。


書式

document.getElementById("id値");

テキストボックス内のテキストを取得する例

document.getElementById("sampleTbox").value;


document.getElementsByName


HTML要素が持つname属性の値をキーとして、HTML要素を複数取得します。「Elements」と複数形でメソッド名を記載する点に気を付けてください。


書式

document.getElementsByName("name属性の値");

テキストボックス内のテキストを取得する例

document.getElementsByName("tbox1")[0].value;


document.getElementsByClassName


HTML要素が持つclass属性の値をキーとして、HTML要素を複数取得します。「Elements」と複数形でメソッド名を記載する点に気を付けてください。


書式

document.getElementsByClassName("class名");

テキストボックス内のテキストを取得する例

document.getElementsByClassName("font-tbox")[0].value;


document.querySelector


こちらはCSSのクラス定義時に指定するセレクタ記法を用いてHTML要素を一つだけ取得するためのメソッドです。jQueryをご存知の方は、jQueryと同じキー値の指定方式と考えてください。


書式

document.querySelector("CSSセレクタ記法による要素指定");

テキストボックス内のテキストを取得する例
 このメソッドは複数候補が見つかった場合、最初の1つだけ取得します。

// idをキーにして取得する場合
document.querySelector("#sampleTbox").value;

// class名をキーにして取得する場合
document.querySelector(".font-tbox").value;








4.querySelector が便利で汎用的



HTML要素の取得を querySelector で代用できる

getElementById(‘id’)querySelector(‘#id’)
getElementsByClassName(‘class’)querySelector(‘.class’)
querySelectorAll(‘.class’)
getElementsByName(“name”)querySelector(“タグ名[name=’name’]”)
querySelectorAll(“タグ名[name=’name’]”)

getElementsByName(“name”) が少しわかりにくかったので、サンプルを作りました。

<button class="testbtn" name="tbox01"> Button 1 </button> 
<button class="testbtn" name="tbox02"> Button 2 </button> 
<button class="testbtn" name="tbox03"> Button 3 </button> 
button {
  width:100px;
  height:60px;
  font-size:15px;
}
const btn1 = document.querySelector("button[name='tbox01']");
const btn2 = document.querySelector("button[name='tbox02']");
const btn3 = document.querySelector("button[name='tbox03']");

//let 変数名 = (引数1, 引数2, ...) => 戻り値;  アロー関数省略
btn1.onclick = () => alert("tbox01");
btn2.onclick = () => alert("tbox02");
btn3.onclick = () => alert("tbox03");






5.javascript イベントハンドラ一覧


イベントハンドラについては、どのタグに、どれが使えるか?という事が様々あるようで、数にするととても多い。そのため、何ができるか、できないか、を把握して、必要な時にリファレンスを見て使えればよいと思う。この流れの早いIT業界で、全て把握するよりも、可能かを知る事と、それを調査して実現できる速度が重要かと思います。

細かく書いていたのでこのページを真似させてもらいました。
JavaScriptのイベントハンドラ一覧
ココはサンプルが置いてあったので、見やすかった。HPもカッコいい。
JavaScriptの基本―イベントハンドラ

イベントハンドラ説明
onBlurページやフォーム要素からフォーカスが外れた時に発生
onFocusページやフォーム要素にフォーカスが当たった時に発生
onChangeフォーム要素の選択、入力内容が変更された時に発生
onSelectテキストが選択された時に発生
onSelectStartページ内の要素が選択されようとした時に発生 ※IEのみ
onSubmitフォームを送信しようとした時に発生
onResetフォームがリセットされた時に発生
onAbort画像の読み込みを中断した時に発生
onError画像の読み込み中にエラーが発生した時に発生
onLoadページや画像の読み込みが完了した時に発生
onUnloadウィンドウを閉じた時、他のページに切り替えた時、ページをリロード(更新)した時に発生
onClick要素やリンクをクリックした時に発生
onDblClick要素をダブルクリックした時に発生
onKeyUp押していたキーをあげた時に発生
onKeyDownキーを押した時に発生
onKeyPressキーを押してる時に発生
onMouseOutマウスが離れたした時に発生
onMouseOverマウス乗った時に発生
onMouseUpクリックしたマウスを上げた時に発生
onMouseDownマウスでクリックした時に発生
onMouseMoveマウスを動かしている時に発生
onDragDropマウスでドラッグ&ドロップした時に発生 ※NN4のみ

目次に戻る

トップに戻る