Level Checker
Description:
あなたの○○度をチェックします。クイズシステムとしても使えます。
*一部のMac版ブラウザ、DreamPassportでは動作しません。
Demo:
Source:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<script language="JavaScript" type="text/javascript">
<!--
/** Level Checker Version1.10 **/
function setBr() {
if(navigator.appVersion.charAt(0)>=4)
b = "\n";
else if(navigator.userAgent.indexOf("Win") != -1)
b = unescape("%OD") + unescape("%0A");
else if(navigator.userAgent.indexOf("Mac") != -1)
b = unescape("%0D");
else
b = unescape("%0A");
return b;
}
var br = setBr();
function levelChecker(fm) {
var formobj = document.forms[0]; //フォームオブジェクト
var error_q = "";
var point = 0;
var maxpoint = 0;
var loopflag = true;
var qcount = 1;
while(loopflag) {
var chkunsel = true;
var mpoint = 0;
var radiolength = formobj.elements["q"+qcount].length;
for(i=0; i<radiolength; i++) {
var checked = formobj.elements["q"+qcount][i].checked;
var crpt = formobj.elements["q"+qcount][i].value;
if(crpt > mpoint) { mpoint = crpt; }
if(checked) {
point += eval(crpt);
chkunsel = false;
}
}
if(chkunsel) { error_q += " [Q"+qcount+"]"; }
maxpoint += eval(mpoint);
qcount++;
if(!formobj.elements["q"+qcount]) { loopflag=false; }
}
if(error_q!="") {
alert("以下の問題の答えが選択されていません\n"+error_q);
}
else {
alert("検査結果が出ました。下の覧をご覧ください。");
levelCheckerShowMessage(qcount-1, point, maxpoint, formobj);
}
}
//*****************************************************
//********* メッセージの生成 **************************
//*****************************************************
function levelCheckerShowMessage(qcount, point, maxpoint, formobj) {
var msg,level;
//判定(*1)
if(point<=0) {
level = "素人";
msg = "・・・・・ホームページ持っていますか?";
}
else if(point<=2) {
level = "一般人";
msg = "まだまだこれからです。修行を頑張りましょう。";
}
else if(point<=4) {
level = "上級者";
msg = "あなたはなかなかの使い手です。更に精進してください。";
}
else if(point<=5) {
level = "達人";
msg = "素晴らしい!あなたはJavaScriptの達人です。もう教えることは何もありませぬ。";
}
//メッセージの出力
now = new Date();
var doc = "";
doc = "あなたのJavaScripter度の検査結果です。" +br;
doc += "-----------------------------------------" +br;
doc += "調査日時:" +now+br;
doc += "総質問数:" +qcount+ "問" +br;
doc += "ポイント:" +point+ "pt / " +maxpoint+"pt(最大)"+br;
doc += "レベル :" +level+br;
doc += br;
doc += msg +br;
formobj.comment.value = doc;
}
//-->
</script>
</head>
<body>
<form method="post" name="q_form">
<p>
<strong>[Q1] あなたはJavaScriptというのを知っている?</strong><br>
<input type="radio" name="q1" value="1">はい<br>
<input type="radio" name="q1" value="0">いいえ<br>
</p>
<p>
<strong>[Q2] 自分のホームページにJavaScriptを使っている?</strong><br>
<input type="radio" name="q2" value="1">はい<br>
<input type="radio" name="q2" value="0">いいえ<br>
</p>
<p>
<strong>[Q3] JavaScriptプログラムの自作が可能?</strong><br>
<input type="radio" name="q3" value="1">はい<br>
<input type="radio" name="q3" value="0">いいえ<br>
</p>
<p>
<strong>[Q4] 一日一回はJavaScriptプログラムを組む?</strong><br>
<input type="radio" name="q4" value="1">はい<br>
<input type="radio" name="q4" value="0">いいえ<br>
</p>
<p>
<strong>[Q5] JavaScriptの為ならありとあらゆるものを犠牲に出来る?</strong><br>
<input type="radio" name="q5" value="1">はい<br>
<input type="radio" name="q5" value="0">いいえ<br>
</p>
<input type="button" onClick="levelChecker(this.form)" value="JavaScript度チェック!">
<br><br>
<textarea cols="90" rows=10 name="comment" style="background-color:#C0C0C0;">
===========================================================
各項目を選択してから、上のボタンを押してください。
ここに検査の結果が出ます。
あなたのJavaScripter度はどれくらい!??
</textarea>
</form>
</body>
</html>
Advice:
■ 各問題は、以下のようなルールで作られています。
<input type="radio" name="q1" value="0">問題1:答え1
<input type="radio" name="q1" value="3">問題1:答え2
<input type="radio" name="q1" value="5">問題1:答え3
<input type="radio" name="q2" value="0">問題2:答え1
<input type="radio" name="q2" value="5">問題2:答え2
各問題の選択肢(type="radio")には同じnameを指定して、
グループ化します。その際、一問目の選択肢は name="q1" ニ問目の選択肢は name="q2"と
q の後ろに問題番号の数字を書いたものをnameで指定します。
value属性は、その選択肢を選んだ際のポイントを表します。
例えば value="5" の選択肢をチェックした場合はその問題に対して
5ポイントが加算されるという意味になります。
このポイントの合計が結果に反映されます。
■ メッセージの出力 (*1)
//判定(*1)
if(point<=0) { //獲得ポイントが0ポイントのとき
level = "素人"; //レベル
msg = "・・・・・ホームページ持っていますか?"; //コメント
}
else if(point<=2) { //獲得ポイントが2ポイント以下のとき
level = "一般人";
msg = "まだまだこれからです。修行を頑張りましょう。";
}
else if(point<=4) { //獲得ポイントが4ポイント以下のとき
level = "上級者";
msg = "あなたはなかなかの使い手です。更に精進してください。";
}
else if(point<=5) { //獲得ポイントが5ポイント以下のとき
level = "達人";
msg = "素晴らしい!あなたはJavaScriptの達人です。もう教えることは何もありませぬ。";
}
(・・・・以下・・・・)
獲得ポイントの合計によって出力するメッセージを変更する。
if(n<=0)は、獲得ポイントが0以下だった場合のメッセージ。
else if(n<=3)は、獲得ポイントが3以下(1〜3)だった場合のメッセージ。
else if(n<=6)は、獲得ポイントが6以下(4〜6)だった場合のメッセージ。
Arrangement:
Browser:
Internet Explorer3.0以上
Netscape Navigator2.0以上