JavaScript講座
(メールマガジン編)
8/27日発行 ヨッシーの”ホームページを作ろう!(JavaScript編)”★Vol.10★
| ”OK・キャンセル”ダイアログ |
| ★ ”OK・キャンセル”ダイアログ ★ |
今回は"OK・キャンセル"ダイアログについてやってみよう。
ダイアログというのは以前やった警告ウィンドウ(alert)のようなもののことだよ。
どんなときに使うかというと、何かボタンを押したときに、ユーザーにこれでいいかどうか確認をするために使うんだ。
まず、"OK・キャンセル"ダイアログを作るための命令をやってみよう。
confirm("表示するテキスト") |
| ”OK・キャンセル”ダイアログを表示する |
と書くんだ。
このconfirm()という関数は、
"OK"を押すと"true"という値が返ってきて、"キャンセル"を押すと"false"という値が返ってくるんだ。
(これを厳密に理解するには前回の引数についてよく理解しないといけない)
◆confirm()の役割◆
ダイアログ"OK","キャンセル"が出る。
"OK"を押すと"true"という値が返ってくる。
(つまり、confirm()が"true"になる、と考えてよい)
"キャンセル"を押すと"false"という値が返ってくる。
(つまり、confirm()が"false"になる、と考えてよい)
しかし、このconfirm()の命令だけじゃあまり意味が無いんだ。
(この命令はただ、ダイアログを画面に表示するだけだからね。)
だから、次のプログラムのようにif文等と組み合わせて使ってやろう。
<HTML>
<HEAD>
<SCRIPT language="JavaScript">
<!--
function yes_no(){
res = confirm("これでいいですか?");
if(res == true){
alert("OKを押しました");
}
else{
alert("キャンセルを押しました");
}
}
//-->
</SCRIPT>
</HEAD>
<BODY>
<INPUT type="button" value="確認" onclick="yes_no()">
</BODY>
</HTML>
≪結果≫
<解説>
<HTML>
<HEAD>
<SCRIPT language="JavaScript">
function yes_no(){ ←yes_no()という関数を作る
res = confirm("これでいいですか?"); ←A変数resにconfirm()の結果を入れる
if(res == true){ ←B"OK"か"キャンセル"か判定
alert("OKを押しました");
}
else{
alert("キャンセルを押しました");
}
}
</SCRIPT>
</HEAD>
<BODY>
<INPUT type="button" value="確認" onclick="yes_no()">
↑@ボタンを押すとyes_no()の関数を出す
</BODY>
</HTML>
@:まず、今までのようにボタンを押すとyes_no()関数が呼び出される。
ここで次に、yes_no()関数を見てみよう。
A:res = confirm("これでいいですか?")
これは、resという変数にconfirm()でユーザーに選択された結果("true"か"false")が代入されるんだね。
つまり、"OK・キャンセル"のダイアログを作って、
OKを押したら--------------res = true
キャンセルを押したら--------res = false
という風になるよね。
だから、ここは見ている人が"OK”か"キャンセル"のどちらかを押すことによって変わってくるね。
B:if(res == true){
alert("OKを押しました");
}
else{
alert("キャンセルを押しました");
}
Aでユーザーの選択("OK"か"キャンセル")によって"true"か"false"がresという変数に入ったよね。
もし、res == true ならば"alert("OKを押しました")"を実行。
それ以外(else)なら、"alert("キャンセルを押しました")"を実行。
このように、ユーザーが"OK"か"キャンセル"のどちらを選んだかによって処理を変えているんだ。
※ = , == の違いについて
(わかる人は読まなくていいです、読むと余計わからなくなる可能性があるから:笑)
メールマガジンのvol2,補足で一度やっているね。
もう一度少しだけ復習してみよう。
= : 代入 == : 等しい
だったね。
<<誤ったら?>>
もし、上のres=confirm()がres==confirm()だったらどうなるかな。
これは、resとconfirm()が等しいということになるね。
でも、この時はまだresという変数には何も入っていないよね。
次にもし、上のif文の中のres==trueがres=trueだったらどうなるかな。
これは、resという変数にtrueという値を入れるという意味だよね。
"="と"=="はよく似ているけど、使い間違えるとぜんぜん違ったプログラムになるからね。
| <問題> [命令]のところを埋めて、ボタンを押すと確認ダイアログ("OK"か"キャンセル")が出て、"OK"を押すと背景が青色になるプログラムを作れ。 <ヒント>
このdocumentって文字を書くときにもあったね。 〜ここから〜 |