JavaScriptおぼえがき(補足)

JavaScriptサイトマップホーム




関数

関数とは、複数の処理をひとまとまりにしたものです。
関数を利用することで目的ごとに処理を分割したり、似たような処理を何度も書かなくて済むようになります。
アロー関数式は、従来の関数式の簡潔な代替構文です。

No 通常関数 アロー関数
 1  function () { 式・文 }  () => { 式・文 }
 2  function(引数) { 式・文 }  引数 => { 式・文 }
 3  function name(引数) { 式・文 }  name = (引数) => { 式・文 }
 4  function name(引数,・・,引数) { 式・文 }  name = (引数,・・,引数) => { 式・文 }

変数の宣言

文字列や数値などのデータに名前をつけることで、繰り返し利用できるようにする変数という機能があります。
変数を宣言をするキーワードとして、const、let、varがあり、使い方の違いは次の通りです。

変数の宣言letvarconst
再宣言不可能可能不可能
再代入可能可能不可能
繰り返し構文可能可能不可能
スコープブロックスコープ
グローバルスコープ
関数スコープ
グローバルスコープ
ブロックスコープ
グローバルスコープ

スコープとは変数の名前や関数などの参照できる範囲を決めるものです。
スコープの中で定義された変数はスコープの内側でのみ参照でき、
スコープの外側からは参照できません。

  • グローバルスコープ
    プログラム直下(関数の外)に定義した変数はグローバル変数と呼ばれ、
    グローバル変数はあらゆるスコープから参照できる変数となります。
    また、宣言なし変数もグローバル変数とみなされます。

  • 関数スコープ
    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>タグは改行コードを含むデータの取得や表示が出来ます。

JavaScriptサイトマップホーム