Java Scriptの解説
6.クイズ問題の作り方
1.Yes,No問題
ラジオボタン(○のボタン)を押すことにより,Yes,Noに答えるクイズ形式
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
<HTML>
<HEAD>
<TITLE>Java Script 例1</TITLE>
<SCRIPT LANGUAGE=”JavaScript”>
<!−−
var msg1;
function KUIZU1(fm){
f=fm.form;f.call.value=fm.value;
}
function KUIZU2(fm){
msg1=fm.value;
document.MyForm.Result.value=msg1+”¥n”;
}
//−−>
</SCRIPT>
</HEAD>
<BODY>
<FORM METHOD="POST">解答<INPUT TYPE="text" SIZE=50 NAME="call"><BR>
1.成人の体の中には,血液が約1−2リットルある。
<INPUT TYPE="radio" NAME="back" VALUE="不正解(4−5リットル)" onClick="KUIZU1(this)">Yes
<INPUT TYPE="radio" NAME="back" VALUE="正解(4−5リットル)" onClick="KUIZU1(this)">No<BR>
</FORM>
<FORM METHOD="POST" NAME="MyForm">
解答<TEXTAREA NAME="Result" ROWS=2 COLS=100></TEXTAREA><BR>
2.急に立って,フラーとすることを貧血という。
<INPUT TYPE="radio" NAME="back" VALUE="不正解(これは起立性低血圧です。貧血では,息切れしやすい,疲れやすなどの症状がでます。)" onClick="KUIZU2(this)">Yes
<INPUT TYPE="radio" NAME="back" VALUE="正解(これは起立性低血圧です。貧血では,息切れしやすい,疲れやすなどの症状がでます。)" onClick="KUIZU2(this)">No<BR>
</FORM>
</BODY>
</HTML>
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
例1表示 ここをクリックして下さい。例が表示されます。
<解説>
1.テキストボックスに表示する。
1)入力形式
<INPUT TYPE="radio" NAME="back" VALUE="不正解(4−5リットル)" onClick="KUIZU1(this)">Yes
TYPE="radio" :ラジオボタン/NAME="back":グループの名前/VALUE ラジオボタンの値/
onClick="KUIZU1(this)":クリックされた時,関数KUIZU1(this)を実行する。
ラジオボタンとは,○のボタンです。これ以外にTYPE="button"では,文字表示つきの長方形のボタンがあります。
問題に対する解答(表示させる文)をそれぞれのボタンのVALUE=“ ”に代入して下さい。
2)値の受け渡し
function KUIZU1(fm){f=fm.form;f.call.value=fm.value;}
f=fm.form;ラジオボタンのあるフォームへの参照をfに代入
f.call.value=fm.value;クリックされたラジオボタンの値をテキストボックスcallに代入
3)値の表示
<INPUT TYPE="text" SIZE=50 NAME="call">
SIZEが50,テキストボックスcallの中身を表示。クリックされたボタンのVALUEの文字が表示されます。
2.テキストエリアに表示する。
1)入力形式
上記と同じ
2)値の受け渡し
function KUIZU2(fm){msg1=fm.value;
document.MyForm.Result.value=msg1+”¥n”;
}
msg1=fm.value; クリックされたボタンの値をmsg1に代入
document.MyForm.Result.value=msg1+”¥n”;
msg1+”¥n”をMyFormというフォームのResultというテキストエリアに代入
”¥n”これは,改行命令。マックでは違う可能性がありますので,マックでは改行されないかもしれません。
3)値の表示
<FORM METHOD="POST" NAME="MyForm"> MyFormという名のフォーム
<TEXTAREA NAME="Result" ROWS=2 COLS=100> Resultというテキストエリアを表示
ROWS=2 :高さCOLS=100:幅
2.三択問題
3個のラジオボタンのいずれかで答える三択問題
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
<HTML>
<HEAD>
<TITLE>Java Script 例2</TITLE>
<SCRIPT LANGUAGE=”JavaScript”>
<!−−
var msg1;
function KUIZU2(fm){
f=fm.form;
if (fm.value=="豚レバー") msg1="不正解です。"+"\n"+"100g当たり..略..";
if (fm.value=="ホウレン草") msg1="不正解です。"+"\n"+"100g当たり..略..";
if (fm.value=="干しひじき") msg1="正解です。"+"\n"+"100g当たり..略..";
documet.MyForm.Result.value=msg1+”¥n”;
}
//−−>
</SCRIPT>
</HEAD>
<BODY>
<FORM METHOD=”POST” NAME=”MyForm”>
<TEXTAREA NAME="Result" ROWS=6 COLS=50></TEXTAREA><BR>
<問題>100g当たりの鉄の含有量の多い食品はどれでしょう。<BR>
<INPUT TYPE="radio" NAME="back" VALUE="豚レバー" onClick="KUIZU2(this)">豚レバー
<INPUT TYPE="radio" NAME="back" VALUE="ホウレン草" onClick="KUIZU2(this)">ホウレン草
<INPUT TYPE="radio" NAME="back" VALUE="干しひじき" onClick="KUIZU2(this)">干しひじき<BR>
</FORM>
</BODY>
</HTML>
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
例2表示 ここをクリックして下さい。例が表示されます。
<解説>
if (fm.value=="豚レバー"):押されたラジオボタンの値(VALUE="ここの文字")が”豚レバー”であれば,次の文(msg1="不正解です。"+...)を実行する。
即ち,msg1にラジオボタンに対応した答えを書いておけば,それが表示されます。
documet.MyForm.Result.value=msg1+”¥n”;結果代入
<TEXTAREA NAME="Result" ROWS=6 COLS=50>:結果表示
3.テスト形式問題
ボタンを押して,最後に得点と解答がでるテスト形式問題
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
<HTML>
<HEAD>
<TITLE>Java Script 例3</TITLE>
<SCRIPT LANGUAGE=”JavaScript”>
<!−−
var msg1,msg2,msg3;
function MakeArray(n){this.Length=n;}
var cont=new MakeArray(4);
function KUIZU1(fm,nn){msg1=fm.value;cont[1]=nn;}
function KUIZU2(fm,nn){msg2=fm.value;cont[2]=nn;}
function KUIZU3(fm,nn){msg3=fm.value;cont[3]=nn;}
function SUM(fm){n1=0;
for (i=1;i<4;i++){
n1=n1+cont[i];}
if (isNaN(n1)) {alert("入力されてない項目があります。");}else false;
fm.answer1.value=n1;
}
function disp()
{document.MyForm.Result.value="第一問:"+msg1+"\n"+"第二問:"+msg2+"\n"+"第三問:"+msg3;
}
//−−>
</SCRIPT>
</HEAD>
<BODY>
−−−−−−−−−−
<INPUT TYPE="radio" NAME="back" VALUE="不正解.略.)" onClick="KUIZU2(this,0)">Yes
<INPUT TYPE="radio" NAME="back" VALUE="正解.略.)" onClick="KUIZU2(this,1)">No
その他問題は省略
−−−−−−−−−−
<FORM METHOD="POST" NAME="MyForm">
確認の上,採点ボタンを押して下さい。<BR>
<INPUT TYPE="button" VALUE="採点" onClick="SUM(this.form)"><BR>
<INPUT TYPE="text" SIZE=6 NAME="answer1">点<BR>
解答ボタンを押して下さい。解答がでます。<BR>
<INPUT TYPE="button" VALUE="解答" onClick="disp()"><BR>
<TEXTAREA NAME="Result" ROWS=18 COLS=100></TEXTAREA><BR>
</FORM>
</BODY>
</HTML>
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
例3表示 ここをクリックして下さい。例が表示されます。
<解説>
1.function MakeArray(n){this.Length=n;} var cont=new MakeArray(4);
count[i]という配列を決める命令です。countは配列名,iは添え字とよばれます。上記はcount[0],..count[4]と5つ配列ができます。
配列の数はMakeArray(4) ( )の中の数字により決まります。ただしcount[0]は使わないで下さい。count[1]から使って下さい。
配列とはデータを入れる箱と考えて下さい。普通の変数と違い添え字を使って色々な処理をするのに便利がよいです。このcountは得点計算に使います。
2.<INPUT TYPE="radio" NAME="back" VALUE="不正解.略.)" onClick="KUIZU2(this,0)">Yes
例1,例2と異なるところは KUIZU2(this,0)です。(this,n)でnという数字が入ります。nは好きな数字でかまいません。例では正解のときは1,不正解の時は0になってます。
要するに正解だと1点,不正解だと0点ということで数字を関数に送るようになってます。
3.function KUIZU1(fm,nn){msg1=fm.value;cont[1]=nn;}
msg1=fm.value; これはいままでの例と同じです。
cont[1]=nn;第一問の得点がはいります。正解だと1,不正解だと0です。
4.<INPUT TYPE="button" VALUE="採点" onClick="SUM(this.form)">
これは「採点」と名前のついたボタンです。
5.function SUM(fm)について
{n1=0;for (i=1;i<4;i++){n1=n1+cont[i];}
実行されるとn1=count[1]+count[2]+count[3]と合計点がn1に代入されます。
if (isNaN(n1)) {alert("入力されてない項目があります。");}else false;
n1に文字が含場合は,入力されてない場所があることになりますので,alertで「入力されてない」注意を表示します。
fm.answer1.value=n1;} テキストボックスanswer1にn1を代入
6.function disp()について
{document.MyForm.Result.value="第一問:"+msg1+"\n"+"第二問:"+msg2+"\n"+"第三問:"+msg3;}
第一問から第三問までの解答の結果をResultに代入
4.画像を使った問題
ボタンを押すと絵が出て,それに対する答える形式
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
<HEAD>
var msg1;
function KUIZU3(fm){f=fm.form;
if (fm.value=="1A")msg1="不正解です。"+"\n"+"気持ちがよいという効果はあります。";
if (fm.value=="1B")msg1="不正解です。"+"\n"+"気持ちがよいという効果はあります。";
if (fm.value=="1C")msg1="正解です。"+"\n"+"血液が..略..。";
document.TestForm.COMENT.value=msg1+"\n";
}
</HEAD>
<BODY>
<FORM METHOD="POST" NAME="TestForm">
解答<TEXTAREA NAME="COMENT" ROWS=4 COLS=50></TEXTAREA>
1.発熱があって冷やす場合,..略..。
<INPUT TYPE="button" VALUE="絵1" onClick="document.mm.src='../image/quiz15.gif'">
<INPUT TYPE="radio" NAME="back" VALUE="1A" onClick="KUIZU3(this)">1.額
<INPUT TYPE="radio" NAME="back" VALUE="1B" onClick="KUIZU3(this)">2.後頭部
<INPUT TYPE="radio" NAME="back" VALUE="1C" onClick="KUIZU3(this)">3.脇の下
</FORM><BR>
<IMG SRC="../image/quiz12.gif" NAME="mm" WIDTH=150 HEIGHT=150>
</BODY>
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
例4表示 ここをクリックして下さい。例が表示されます。
<解説>
1.<IMG SRC="../image/quiz12.gif" NAME="mm" WIDTH=150 HEIGHT=150>
画像の表示ですが,これに名前を付けて置いて下さい。その名前を使って,絵を表示し直します。
NS Ver3では,<FORM>と</FORM>の間に置くとうまく動きませんですから解答表示するテキストエリアと絵を一緒におけません。
NS Ver4 IEVer4では,大丈夫です。解答欄と絵は隣り合わせに置いた方が見やすいのですがNS Ver3を考えるとできません。
2.<INPUT TYPE="button" VALUE="絵1" onClick="document.mm.src=’../image/quiz15.gif’">
ボタンがクリックされると"document.mm.src=’../image/quiz15.gif’">が実行されます。
mmという名前の絵に新たに'../image/quiz15.gif'という画像を表示します。「’」に注意して下さい。「”」ではありません。
5.付録
クイズ問題のフォームを作りましたので、自分ホームページにクイズを載せたい方は参考にして下さい。
クイズの形式No1
一問ごとに問題が表示される形式のクイズです。
クイズの形式No2
一問ごとに問題が表示される形式のクイズでが、不正解した時点で終了します。
娯楽室の各部屋