コメントアウトは「//」(単行)、「/* ... */」(複数行可能)
各行末にはセミコロン( ; )を記述。
JavaScriptのコードをhtmlファイルとは別に作成して呼び出す手順。head要素内にscript要素を置いて記述する。
【htmlファイル】
...
<head>
...
<script type="text/javascript" src="JavaScriptファイル名"></script>
...
</head>
htmlファイル内に直接JavaScriptコードを記述する書式は以下の通り[2]。
<script type="text/javascript"> <!-- // ここにコードを記述する //--> </script>
JavaScriptコードは、古いブラウザでJavaScriptコードがそのまま表示されてしまわないよう、「<!--
」と「//-->
」で囲んでhtmlコメントアウトしておく。
外部ファイルにJavaScriptコードを記述し、それを読み込む場合の書式は以下の通り。記載場所は通常 head 要素の中。
<head>
...
<script type="text/javascript" src="読み込みたいJavaScriptファイルのパス"></script>
...
</head>
比較演算子、論理演算子は以下の通り7 28 - 演算子 39_05。
種別 | 記述方法 | 備考・例 |
---|---|---|
論理積(and) | && |
【例】 expr1 && expr2 |
論理和(or) | || |
【例】 expr1 || expr2 |
否定(not) | ! |
【例】
!expr
|
プロパティ名 | 内容 |
---|---|
window.innerWidth | ウインドウ内側の幅 |
window.innerHeight | ウインドウ内側の高さ |
window.outerWidth | ウインドウ外側の幅 |
window.outerHeight | ウインドウ外側の高さ |
値 | 内容 | 例 |
---|---|---|
navigator.userAgent | ユーザエージェント情報 | Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:12.0) Gecko/20100101 Firefox/12.0 |
navigator.appName | ブラウザ名 | Netscape |
navigator.appCodeName | ブラウザのコード名 | Mozilla |
navigator.appVersion | ブラウザのバージョン | 5.0 (Macintosh) |
navigator.platform | OSプラットフォーム | MacIntel |
navigator.language | ブラウザの使用言語 | ja |
navigator.plugins | ブラウザのプラグイン。各プラグイン情報を要素とする配列。個数はnavigator.plugins.lengthで、各要素はnavigator.plugins[n](nは0〜length-1) |
例:
<table class="bordertbl"> <tr> <th>値</th> <th>あなたの値</th> </tr> <tr> <td>navigator.userAgent</td> <td> <script type="text/javascript"><!-- document.write(navigator.userAgent); --> </script> </td> </tr> <tr> <td>navigator.appName</td> <td> <script type="text/javascript"><!-- document.write(navigator.appName); --> </script> </td> </tr> <tr> <td>navigator.codeName</td> <td> <script type="text/javascript"><!-- document.write(navigator.codeName); --> </script> </td> </tr> <tr> <td>navigator.appVersion</td> <td> <script type="text/javascript"><!-- document.write(navigator.appVersion); --> </script> </td> </tr> <tr> <td>navigator.platform</td> <td> <script type="text/javascript"><!-- document.write(navigator.platform); --> </script> </td> </tr> <tr> <td>navigator.language</td> <td> <script type="text/javascript"><!-- document.write(navigator.language); --> </script> </td> </tr> <tr> <td>navigator.languages</td> <td> <script type="text/javascript"><!-- for (let i in navigator.languages) { document.write(navigator.languages[i] + ', '); } --> </script> </td> </tr> <tr> <td>navigator.plugins</td> <td> <script type="text/javascript"><!-- for (let i in navigator.plugins) { document.write(navigator.plugins[i] + ', '); } --> </script> </td> </tr> </table>
出力結果:
値 | あなたの値 |
---|---|
navigator.userAgent | |
navigator.appName | |
navigator.codeName | |
navigator.appVersion | |
navigator.platform | |
navigator.language | |
navigator.languages | |
navigator.plugins |
参考文献・サイト[18]
location.href で取得可能[1]
例:
また、値を設定することでページを移動させることも可能[2]
【コード】
<button onclick="location.href='http://www.cudo29.org/'">ページを移動</button>
【表示】
どこか他のページからリンクをたどって現在のページにやってきた場合、リンク元ページのURLを得るにはdocument.referer
が使える[2-3]。
【コード】
<script type="text/javascript"><!-- document.write('このページには ' + document.referrer + ' から来られましたね'); //--> </script>
【表示】
location.search で、?を含むGETクエリ部分を取得できる。これを使って配列にGET引数を受け取ることができる。[30]
// GET引数受領 var getargs = {}; if (window.location.search.length > 1) { // 先頭の?を除去して受領 var querystr = window.location.search.substring( 1 ); // & で分割して配列に格納 var params = querystr.split('&'); // 各要素を処理 for (var i = 0; i < params.length; i++ ) { // キーと値に分割 var elem = params[i].split('='); var key = decodeURIComponent(elem[0]); var value = decodeURIComponent(elem[1]); // キーセットを連想配列に追加 getargs[ key ] = value; } }
location.host でホスト名とポート番号、location.hostnameでホスト名のみ、location.portでポート番号のみを取得できる[26][38]
【コード】
コード | 内容 | 例 |
---|---|---|
location.host | ホスト名とポート番号 | example.org:80 |
location.hostname | ホスト名のみ | example.org |
location.port | ポート番号のみ | 80 |
location.pathname | パス | / |
location.protocol | プロトコル | http: |
【例】 <script type="text/javascript"><!-- document.write('<p>このページのホスト名は「' + location.hostname + '」です</p>' + "\n"); document.write('<p>このページのホスト名+ポート番号は「' + location.host + '」です</p>' + "\n"); document.write('<p>このページのポート番号は「' + location.port + '」です</p>' + "\n"); document.write('<p>このページのプロトコルは「' + location.protocol + '」です</p>' + "\n"); document.write('<p>このページのパスは「' + location.pathname + '」です</p>' + "\n"); //--> </script>
【表示】
書式 | 検索キー | 返り値 |
---|---|---|
getElementsByTagName(タグ名)[2-7]、[01] | タグ名 | 指定タグ要素を全て含む配列 |
getElementsByName(name属性値)[2-5]、[15]、[1] | name属性値 | 指定したname属性値を持つ要素を全て含む配列 |
getElementById(id属性値) | id属性値 | 指定したid属性値を持つ要素(オブジェクト) |
【例】指定タグの数、指定name属性値を持つ要素の数、指定id属性値を持つ要素のvalue属性値 <script type="text/javascript"><!-- function counter(type,arg) { if (type == 'TagName') { alert('このページには' + document.getElementsByTagName(arg).length + '個の' + arg + 'タグがあります'); } else if (type == 'Name') { alert('このページにはname属性値が' + arg + 'である要素が' + document.getElementsByName(arg).length + '個あります。'); } else if (type == 'Id') { alert('このページでid属性値に' + arg + 'が設定されている要素のvalue属性値は' + document.getElementById(arg).value + 'です。'); } } --> </script> <p> <input type="hidden" name="hoge" value=""/> <input type="hidden" name="pooh" id="pooh" value=""/> <input type="button" value="aタグの数" onclick="counter('TagName','a')"/> <input type="button" value="name属性値hogeを持つ要素の数" onclick="counter('Name','hoge')"/> <input type="button" value="id属性値にpoohを持つ要素の内容" onclick="counter('Id','pooh')"/> <p>
書式 | 備考 |
---|---|
getAttribute(属性名) | 指定した属性の値を返す |
setAttribute(属性名,属性値) | 指定した属性を追加する |
removeAttribute(属性名) | 指定した属性を削除する |
【例】チェックボックスのON/OFFに対応してボタンの有効/無効が切り替わる <script type="text/javascript"><!-- function control_attribute() { if (document.getElementById('attrcontroller').checked) { document.getElementById('control_receiver').removeAttribute('disabled'); } else { document.getElementById('control_receiver').setAttribute('disabled','disabled'); } } --> </script> <p> <label><input type="checkbox" id="attrcontroller" onchange="control_attribute()"/>チェックをONにすると右のボタンが有効になり、OFFにすると無効になります。</label> <input type="button" value="ボタン" id="control_receiver"/> </p>
参考文献・サイト[2-8]
要素ノード.getAttribute(属性キー値)
innerHTMLは要素の中に含まれるhtmlを返す
【書式】 要素.innerHTML; 【例】
outerHTMLは要素自体も含むhtmlを返す
【書式】 要素.outerHTML; 【例】
document.write
は指定したドキュメントに文字列や値を書き込む。document.writeln
はdocument.write
とほぼ同じだが、最後に改行コードが出力される点が異なる。書き込みが完了した後はdocument.close
で書き込みを閉じること(閉じないと正しく出力されないことがある)。
【書式】 document.write(文字列); document.writeln(文字列); document.close(); 【例】 document.writeln("<div>"); document.writeln("ほげ"); document.writeln("</div>");
【書式】 window.open("ファイル名","フレーム名",オプション);
フレーム名
スタイル
別ウインドウで開くには、スタイルを指定する必要があるよう。指定しないで、別のフレーム名を指定して開くと、別タブで開かれる(タブブラウザの場合、Mac OS X 10.4.11+Firefox 3.0.11で確認)。
window.open
を使うと、target属性値で開くフレームを指定する方法がとれない Strict やXHTML 1.1で開く先のフレームを指定できる。
<a href="http://www.hoge.com/" onclick="javascript:window.open(this.href,'fuga');return false">
hogeをfugaフレームに開きます</a>
this.href: 自己要素(a要素)のhref属性の値=http://www.hoge.com/
return false: htmlとしてのハイパーリンクを無効化する(有効だとhtmlのハイパーリンクが効いて自己フレームに開いてしまう)
参考文献・サイト:
ブラウザの「戻る」ボタンを押すのと同じ挙動をする。
window.back();
location.href
で実現可能。
【書式】
location.href='リダイレクト先URL';
【例】ボタンをクリックするとトップページに移動 <input type="button" value="クリックするとトップページに移動します" onclick="location.href='index.html'"/>
[13]
【書式】
document.forms[値].submit();
値にはform要素の登場順序を示す数値(最初が0)または対象form要素のid属性値を指定(xhtml1.1より前ではform要素にname属性を指定しこれで示すこともできるが、xhtml1.1ではform要素にname属性を指定するのはNG)。
【例】
<form method="post" action="hoge.cgi" id="fuga">
<input type="text" name="name" value="Thomus" />
<input type="text" name="number" value="1" />
<a href="" onclick="document.forms['fuga'].submit();return false;">submit</a>
</form> ↑戻り値にfalseを指定するとhref要素に記述された先へのリンクが無効化される
プルダウンリストの選択内容変更などのイベントを検知する。選択内容に応じたページ内容を表示することなどに使える。
<select onchange="alert(this.options[this.selectedIndex].value);">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
this: select要素全体
selectedIndex: 選択されているインデックス番号(最初が0番)
options[番号].value: 指定インデックス番号の値(表示値を指定したいならvalueの代わりにtext)
テキストボックスに入力された値は下記書式にて取得できる。
【書式】 document.forms[対象フォーム要素のページ内の出現順序].element['対象input要素のid属性値'].value
【例】 <form method="post" action="#" id="myform"> <input type="text" size="4" maxlength="4" value="" id="pdbid"/> <input type="button" value="Display PDBj Mine Summary Page" onclick="window.open('http://service.pdbj.org/mine/summary_j/' + document.forms[0].element['pdbid'].value)"/> </form>
フォームのリクエスト送信結果を表示するターゲットフレームを指定するには、form要素のtarget属性を指定する方法があるが、この方法はHTML1.0 Transitional/Framesetでしか使えない。XHTML1.1などではonsubmit属性で指定すればよい41。
<form method="get" name="searchform" action="https://example.com/form" onsubmit="document.searchform.target='_blank'return true"> </form>
ボタンは「OK」ボタン1つだけである「警告ダイアログ」を表示するには、windows.alert
を用いる。
【書式】
window.alert("表示メッセージ");
表示メッセージ中での改行は"\n"、タブは"\t"。
function test(id){ window.confirm("OKボタンをクリックして下さい。"); }
参考文献・サイト[2-9]
別のページに移動しようとした時やページを閉じようとした時に発生するイベント。 returnで何か値を返すと、イベントが発生した時確認ダイアログが表示される[1]。
例: <script type="text/javascript"><!-- window.onbeforeunload = function () { return "本当に離れますか?"; } --></script>
【書式】 if (条件) { 処理内容 } else if (条件) { 処理内容 ... } else { 処理内容 }
【書式】 switch (変数) { case 値1: 処理内容 break; case 値2: 処理内容 break; ... default: 処理内容 break; }
switch文の場合、break文を入れないと引き続き後続のcase文まで実行されていく。逆にそれを利用して複数の条件を束ねることもできる。
【例】 switch (3) { case 1: case 2: echo 'Less than 3.'; break; case 3: echo 'Equal to 3.'; break; default: echo 'Larger than 3.'; }
参考文献・サイト[25]
for を使って繰り返し処理を記述することができる[2]。
【書式1】 for (初期条件; 継続条件; 次ループに移る時の処理) { 処理内容 } 【例1】 var myarray = [3,4,10,9,1,9,9,5,4,2]; var sum = 0; var i = 0; for (i=0; iループ処理内で変化させる変数の名前 in 配列変数) { 処理内容 } 【例1】 var myarray = [3,4,10,9,1,9,9,5,4,2]; var sum = 0; var i = 0; for (i in myarray) { sum += myarray[i]; } alert("合計は" + sum + "です");
【書式】 function 関数名(引数名,引数名2...) { ... } 【例】 <script type="text/javascript"><!-- function myfunc(name) { document.write('My name is ' + name + '.'); } myfunc("Kudou"); //--> <script>
関数の引数は arguments
で参照できる(各引数を格納した配列を返す)。arguments.length
とすると引数の個数が得られる[9]。
これを利用して、引数のデフォルト値を設定することができる16
変数を用いるにはあからじめvarを使って宣言する必要がある。代入や参照の方法も含め、事例を以下に示す[14]
【コード】
<script type="text/javascript"><!-- var name; name = 'taro'; document.write('My name is ' + name + '.'); //--> </script>
【表示】
未定義のキーを持つ要素にアクセスしようとすると undefined という特別な定数が返ることを利用すればよい[32]
var greetings = {english: "hello"}; if ( greetings["japanese"] !== undefined ) { alert("The japanese greeting is not defined."); } else { alert(greetings["japanese"]); }
関連項目:
【コード例】
<script type="text/javascript"><!-- document.write("<p>このページのURLは "+location.href+" です。</p>") sharppos = location.href.indexOf("#",0) if (sharppos == -1) { document.write("<p>ページ内位置指定はありません。</p>") } else { document.write("<p>ページ内位置指定を除去すると "+location.href.substr(0,sharppos)+" です。</p>") } //--></script>
【表示】
#を?に変えれば、GET引数部分も除去した、ファイル名までの部分が得られる。
JavaScriptの基本(1〜5)/応用(6〜10)