関数
関数とは、複数の処理をひとまとまりにしたものです。
関数を利用することで目的ごとに処理を分割したり、似たような処理を何度も書かなくて済むようになります。
アロー関数式は、従来の関数式の簡潔な代替構文です。
No |
通常関数 |
アロー関数 |
1 |
function () { 式・文 } |
() => { 式・文 } |
2 |
function(引数) { 式・文 } |
引数 => { 式・文 } |
3 |
function name(引数) { 式・文 } |
name = (引数) => { 式・文 } |
4 |
function name(引数,・・,引数) { 式・文 } |
name = (引数,・・,引数) => { 式・文 } |
変数の宣言
文字列や数値などのデータに名前をつけることで、繰り返し利用できるようにする変数という機能があります。
変数を宣言をするキーワードとして、const、let、varがあり、使い方の違いは次の通りです。
変数の宣言 | let | var | const |
再宣言 | 不可能 | 可能 | 不可能 |
再代入 | 可能 | 可能 | 不可能 |
繰り返し構文 | 可能 | 可能 | 不可能 |
スコープ | ブロックスコープ
グローバルスコープ | 関数スコープ グローバルスコープ | ブロックスコープ グローバルスコープ |
スコープとは変数の名前や関数などの参照できる範囲を決めるものです。
スコープの中で定義された変数はスコープの内側でのみ参照でき、
スコープの外側からは参照できません。
-
グローバルスコープ
プログラム直下(関数の外)に定義した変数はグローバル変数と呼ばれ、
グローバル変数はあらゆるスコープから参照できる変数となります。
また、宣言なし変数もグローバル変数とみなされます。
-
関数スコープ
function内の変数及び仮引数は関数内で有効(function 関数(仮引数){・・・・・})
-
ブロックスコープ
ブロック内({と}で囲まれた中)で宣言された変数は、
スコープ内でのみ参照でき、スコープの外側からは参照できません。
イベントハンドラ
JavaScriptにおける「イベント」とは、ウェブページ上で発生するあらゆるアクションの総称です。
例えば、ボタンのクリック、フォームへの入力、ページの読み込み、
マウスポインタを要素の上に合わせるなど、
様々な出来事がページ上で発生します。
イベントハンドラは、このイベントを検出し、イベントに処理を与えるのに使用します。
イベントハンドラによって、発生したイベントごとに処理を実行することができます。
イベントハンドラの指定方法
- <tagName onxxx="・・・.">
例)<input type="button" value="OK" onclick="alert('Hello!')">
- object.onxxx = function
例1)window.onload = function() { alert("Hello!"); };
例2)document.getElementById("button1").onclick = function() {
alert("Clicked!"); };
※HTMLは<input type="button" id="button1">
- object.addEventListener(event, function)
例1)window.addEventListener("load", function() { alert("Hello
A");");});
例2)function keyUpHandler() { alert("Hello!"); }
obj.addEventListener("keyup", keyUpHandler);
- URL記述(javascript:...)
<a href="javascript:alert('Hello!!')">Click Me!!</a>
イベントハンドラ一覧
分類 |
イベント |
発生タイミング |
発生するタグ例 |
event |
onchange |
要素の値が変更され、要素が入力フォーカスを失ったとき |
input,select,textarea |
event |
oninput |
要素に値が入力されたとき |
input,select,textarea |
event |
oninvalid |
送信時に要素の値が制約を満たさないとき
(例)input typr="url"でurl以外の場合など |
input |
event |
onoffline |
ネットワークがオフラインになったとき |
window |
event |
ononline |
ネットワークがオンラインになったとき |
window |
event |
onreset |
フォームがリセットされるとき |
form |
event |
onsubmit |
フォームを送信しようとした |
form |
focus |
onblur |
要素が一度アクティブになり、フォーカスを失ったとき |
a,area,button,input,label,
option,select,textarea |
focus |
onfocus |
要素がフォーカスを得たとき |
a,area,button,input,label,
option,select,textarea |
keyboard |
onkeydown |
いずれかのキーが押されたとき |
a,area,button, |
keyboard |
onkeypress |
いずれかのキーが押されて放されたとき |
input,label,option, |
keyboard |
onkeyup |
いずれかのキーが放されたとき |
select,textarea |
media |
oncanplay |
再生が可能になったとき |
audio、video |
media |
oncanplaythrough |
現状の速度で読み込みを続ければ途切れることなく
動画を再生できるとき |
audio、video |
media |
ondurationchange |
コンテンツの長さの変化を示すメタデータが読み込まれたとき |
audio、video |
media |
onemptied |
コンテンツが空になった時。
例えば、実行状態でload()が実行されたとき |
audio、video |
media |
onended |
再生終了時 |
audio、video |
media |
onloadeddata |
現在の再生位置でvideo映像の表示が可能になったとき |
audio、video |
media |
onloadedmetadata |
メタデータの読み込みが完了したとき |
audio、video |
media |
onloadstart |
メディア・ファイルの読み込みを開始したとき |
audio、video |
media |
onpause |
メディア・ファイルの再生が一時停止のとき |
audio、video |
media |
onplay |
メディア・ファイルを再生したとき |
audio、video |
media |
onplaying |
メディア・ファイルを再生中のとき |
audio、video |
media |
onprogress |
メディア・ファイルを読み込み中のとき |
audio、video |
media |
onratechange |
メディア・ファイルの再生速度が変化したとき |
audio、video |
media |
onseeked |
videoファイルのシーク終了時 |
audio、video |
media |
onseeking |
videoファイルのシーク開始時 |
audio、video |
media |
onstalled |
メディアのデータの取得に失敗したとき |
audio、video |
media |
onsuspend |
サスペンドからの復帰時 |
audio、video |
media |
ontimeupdate |
video の再生開始からの時間の更新時 |
audio、video |
media |
onvolumechange |
音量が変化したとき |
audio、video |
media |
onwaiting |
video再生が中断して待機状態になったとき |
audio、video |
mouse |
onclick |
マウスのボタンを1度押して離したとき |
ほとんどのタグ |
mouse |
ondblclick |
マウスのボタンを押して離すを2度続けたとき |
ほとんどのタグ |
mouse |
onmousedown |
マウスのボタンが押されたとき |
ほとんどのタグ |
mouse |
onmouseenter |
マウスカーソルが要素に入り込んだとき |
ほとんどのタグ |
mouse |
onmouseleave |
マウスカーソルが要素から出たとき |
ほとんどのタグ |
mouse |
onmousemove |
マウスカーソルが要素の上を移動したとき |
ほとんどのタグ |
mouse |
onmouseout |
マウスカーソルが要素の上から離れたとき |
ほとんどのタグ |
mouse |
onmouseover |
マウスカーソルが要素の上に乗ったとき |
ほとんどのタグ |
mouse |
onmouseup |
マウスのボタンが離されたとき |
ほとんどのタグ |
mouse |
onmousewheel |
マウスのホイールを操作したとき |
ほとんどのタグ |
print |
onafterprint |
フォームの印刷の完了したとき |
window |
print |
onbeforeprint |
フォームの印刷の開始直前 |
window |
uievent |
onabort |
リソースのロードを中断したとき |
img |
uievent |
onerror |
リソースのロード中にエラーが発生したとき |
img |
uievent |
onload |
リソースのロードが完了したとき |
body |
uievent |
onresize |
ウィンドウのサイズが変更されたとき |
window |
uievent |
onscroll |
スクロールバーでスクロールしたとき |
body,div |
uievent |
onselect |
テキストが選択されたとき |
input,textarea |
uievent |
onshow |
window,画像を表示するとき |
window |
uievent |
onunload |
リソースのロードをアンロードするとき |
body |
* |
onbeforeunload |
画面遷移への要求が発生し、ページがアンロードされる前 |
window |
* |
oncancel |
Escキーや×などを押下して中止したとき |
window |
* |
oncuechange |
字幕や副音声のテキストが別のテキストに変更したとき |
track |
* |
onhashchange |
ハッシュが変更されたとき |
window |
* |
onmessage |
データを受信したとき |
window |
* |
onpagehide |
ページが非表示になったとき |
window |
* |
onpageshow |
ページが表示されたとき |
window |
* |
onpopstate |
[戻る] または [進む] をクリックして履歴を移動したとき |
window |
* |
onstorage |
Web Storageエリアに更新があったとき |
window |
マウスイベント
イベント名 |
発生するタイミング |
auxclick |
左クリック、右クリック以外のボタン(ホイールクリックなど)を押したとき |
click |
左クリックしたとき |
contextmenu |
右クリックしてメニューが開くとき |
dblclick |
左ダブルクリックしたとき |
mousedown |
マウスのいずれかのボタンを押した瞬間 |
mouseenter |
マウスカーソルがHTML要素に乗ったとき |
mouseleave |
マウスカーソルがHTML要素から離れたとき |
mousemove |
マウスカーソルが動いたとき |
mouseout |
マウスカーソルがHTML要素から離れたとき |
mouseover |
マウスカーソルがHTML要素に乗ったとき |
mouseup |
マウスのいずれかのボタンを離した瞬間 |
select |
マウスでテキストなどを選択したとき |
wheel |
マウスホイールが転がったとき |
参考で「マウス/タッチイベント」のサンプルコードをご覧ください。
JavaScriptの改行コードの扱い
改行文字「\n」
エスケープシーケンスの改行文字「\n」を挿入すると、改行が出来ます。
ソースコード
data ="一行目\n二行目\n三行目" ;
res1.innerHTML = data ;
res2.innerHTML = data ;
<textarea id="res1">タグ内で改行出来ます。
<div id="res2">や<p id="res2">などのタグ内では改行しません。
バッククォーテーション「`」
ECMAScript 2015 (ES 6) からバッククォーテーション「`」で全体を囲って記述することができるようになりました。
囲ったデータは改行を含んだデーターとして扱えます。
ソースコード
data =`一行目
二行目
三行目` ;
res3.innerHTML = data ;
<textarea id="res3">タグ内で改行出来ます。
エスケープシーケンスの改行「\」
エスケープ処理(エスケープシーケンス)は、JavaScriptで特殊な文字を入力する際に
¥(円マーク)か(バックスラッシュ)を前につけて表示する方法です。
シングルクォーテーション「'」またはダブルクォーテーション「"」で囲った内容が長い場合に、
見やすくするために使います。この場合は、改行コードは含みません。
ソースコード
data ="一行目\
二行目\
三行目" ;
res5.innerHTML = data ;
<textarea id="res5">タグ内で改行しません。。
改行タグ「<br>」
<div>や<p>タグ内の改行は改行タグ「<br>」を挿入します。
改行文字「\n」は使えません。
ソースコード
data = "一行目<br>二行目<br>三行目" ;
res7.innerHTML = data ;
<div id="res7">タグ内で改行できます。
配列データの改行指定
「Arrayオブジェクト」のデータは「join」メソッドで、配列の要素を繋げて文字列に変換することがで来ます。 繋げる文字を「\n」や「<br>に指定すると、改行簡単に出来ます。
data =
["一行目","二行目","三行目"].join('\n') ;
res8.innerHTML = data ;
<textarea id="res3">タグ内で改行出来ます。
※<textarea>タグは改行コードを含むデータの取得や表示が出来ます。 |