「イベントとダイアログボックス」
今まで、JavaScriptのスクリプトは全て「onClick」というもので設定してきました。このonClickというのは、HTMLに用意されているイベントの一つです。クリックしたときに、これで設定されたルーチンを呼び出すわけです。
こうしたイベントは、実は他にもいくつかあります。それらについて説明しておきましょう。
<SCRIPT LANGUAGE="JavaScript">
<!--
function LoadNow () {
alert ("ロードしました!")
}
//-->
</SCRIPT>
<HTML>
<HEAD></HEAD>
<BODY onLoad="LoadNow ()">
<p>ロードのテストです。</p>
</BODY>
</HTML>
このようにすると、ロードし終わったところでLoadNow ()というルーチンが自動的に呼び出され、画面に「ロードしました!」というアラートが表示されます。
<SCRIPT LANGUAGE="JavaScript">
<!--
function changeNow () {
X = document.MyFrm.MySt.selectedIndex
alert ("あなたは" + (X + 1) + "番目を選びました。")
}
//-->
</SCRIPT>
<HTML>
<HEAD></HEAD>
<BODY>
<p>選択リストのテストです。</p>
<FORM NAME="MyFrm">
<SELECT NAME="MySt" onChange="changeNow ()">
<OPTION>AAA
<OPTION>BBB
<OPTION>CCC
</SELECT>
</FORM>
</BODY>
</HTML>
これは、選択リストを変更すると「あなたは○○番目を選びました」と画面に表示されるサンプルです。項目を変更しないとメッセージは現われません。
<SCRIPT LANGUAGE="JavaScript">
<!--
lastStr = ""
function startNow () {
lastStr = document.MyFrm.MyTxt.value
}
function endNow () {
document.MyFrm.MyTxt.value = lastStr
}
//-->
</SCRIPT>
<HTML>
<HEAD></HEAD>
<BODY>
<p>テキスト書き換えのテストです。</p>
<FORM NAME="MyFrm">
<TEXTAREA NAME="MyTxt" COLS="50" ROWS="2" onFocus="startNow ()" onBlur="endNow ()">
これは書き換えても元に戻ります。
</TEXTAREA>
</FORM>
</BODY>
</HTML>
これは、書き換えても後で自動的に表示が元に戻るテキストエリアです。onFocusでテキストエリアのvalueを調べてグローバル変数に入れ、onBlurでそれをvalueに戻します。
※グローバル変数について
通常、変数は関数内で定義しますが、このように関数ルーチンを定義する前に変数を作成しておくと、それは全ての関数から呼び出せるようになります。このような変数を「グローバル変数」と呼びます。これは非常に重要ですのでよく覚えておいてください。
他にもイベントはありますが、とりあえずこの程度覚えておけば、オブジェクトにさまざまな動作を割り付けられるようになるでしょう。
HTMLオブジェクトとともに、ユーザーインターフェイス構築に多用されるものがあります。それはダイアログボックスです。今まで、プログラムの結果を表示するのに、「alert」という命令を多用していましたね。あれもダイアログボックスの一つです。
この他にもダイアログボックスはいくつかあります。それらについても説明しておきましょう。
では、この2つのダイアログボックスを使ったサンプルを作ってみましょう。
<SCRIPT LANGUAGE="JavaScript">
<!--
function MyFunc () {
flg = confirm ("移動しますか?")
if (flg == true) {
ad = prompt ("URLを入力して下さい。","http://www.apple.com")
if (ad != null) {
open (ad)
}
} else {
alert ("では、移動しません。")
}
}
//-->
</SCRIPT>
<HTML>
<HEAD></HEAD>
<BODY>
<p>ダイアログボックスのテストです。</p>
<FORM NAME="MyFrm">
<INPUT TYPE="button" NAME="Btn" VALUE="Webサイトを開く" onClick="MyFunc ()">
</FORM>
</BODY>
</HTML>
これは、入力したURLのサイトを新しいウィンドウで表示するボタンです。ボタンをクリックすると、画面に「移動しますか?」というダイアログボックスが現われます。これで「いえ」を選ぶと移動しません。「はい」を選ぶと、URL入力のダイアログボックスが現われ、そこにURLを入力してOKすれば新たにウィンドウが開きます。では、プログラムを見てみましょう。
function MyFunc () {
flg = confirm ("移動しますか?")
if (flg == true) {
ad = prompt ("URLを入力して下さい。","http://www.apple.com")
if (ad != null) {
open (ad)
}
} else {
alert ("では、移動しません。")
}
}
まず、最初に flg = confirm ("移動しますか?") を実行しています。これで、「はい」か「いいえ」を選んでもらい、実行の確認をしているのです。次のif文で、flgがtrueであれば(つまり「はい」を選んだら)、ad = prompt ("URLを入力して下さい。","http://www.apple.com") を実行してURLの入力を促しています。そしてその後で入力された値がnullかどうか調べ、nullでなければそのURLを開いているのです。URLを開くのに、「open ()」という命令を使っています。これは、URLを新しいウィンドウで開く命令です。非常に重宝しますからついでに覚えておいてください。
このように、alert/confirm/promptの3つを組み合わせると、ユーザーとのやりとりが非常にしやすくなります。インターフェイスの基本として覚えておきましょう。