ラジオボタンで選択・回答するテストを作っています。
仕様
●問題は40問、3つの選択の中からひとつ選ぶ
●点数はアラートで表示される
●点数によって次に表示されるページが異なる
●チェックしていないところがあってもOk
問題
●アラート表示されない
●次のページにいかない
●とにかく動かない
Script
//------------ answers --------------
var arrAnswer = new Array();
arrAnswer[0] = 0;
arrAnswer[1] = 1;
arrAnswer[2] = 1;
arrAnswer[3] = 0;
・
・(略)
・
arrAnswer[36] = 0;
arrAnswer[37] = 1;
arrAnswer[38] = 1;
arrAnswer[39] = 1;
//------------ correct answers --------------
function englishTest(){
var score=0;
for(i=0; i<=39; i++){
objtestNumber = document.form_test.test+i;
if(objtestNumber[arrAnswer[i]].checked){
score += 1;
} // end if checked
} // end for i
//------------ alert depends on their scores --------------
if (score<=14){
alert("You have scored "+score+" out of40! Your level is Biginner");
document.location.href="http://www.google.com";
} // end biginner
if (score>=15&&score<=28){
alert("You have scored "+score+" out of40! Your level is Intermediate");
document.location.href="http://www.lululemon.com";
} // end intermediate
if (score>=29&&score<=40){
alert("You have scored "+score+" out of40! Your level is Advanced");
document.location.href="http://www.yahoo.com";
} // end advanced
} // end function englishTest
HTML
<h1>ENGLISH GRAMMAR TEST</h1>
This test will give you an approximate rating of your English.<br />
When you arrive at VIC, you will receive a complete assessment of your language skills.<br /><br />
<form name="form_test">
<div>
1. Vancouver … very beautiful.<br />
<input type="radio" name="test0" value="is" />is
<input type="radio" name="test0" value="are" />are
<input type="radio" name="test0" value="has" />has
</div>
<br />
<div>
2. He … like hockey very much.<br />
<input type="radio" name="test1" value="don't" />don't
<input type="radio" name="test1" value="Correct" />doesn't
<input type="radio" name="test1" value="hasn't" />hasn't
</div>
<input name="submit" type="submit" value=" Correct Answer " onclick="englishTest()" />
<input name="reset" type="reset" value=" reset " />
</form>
URL
http://studyinvancouver.com/manami_shimizu/test.php
テストってことで2問だけ作っています。
今後、回答をメールで受け取るように設定する予定なので
PHPでつくっています。
よろしくお願いします。。。
お礼
eval("objtestNumber = document.form_test.test" + i + ";"); にすると直りました! お騒がせしましたー!!!
補足
>submitではなく普通のボタン(type="button")にして、 >JavaScriptでsubmitしてやればよさそうです。 これだけでは変化なかったので下記の //------------ correct answers -------------- function englishTest(){ var score=0; for(i=0; i<=39; i++){ objtestNumber = document.form_test.test+i; if(objtestNumber[arrAnswer[i]].checked){ score += 1; } // end if checked } // end for i の中の objtestNumber = document.form_test.test+i; をとりあえず最初の一問目の objtestNumber = document.form_test.test0; にすると動きました。 ということは objtestNumber = document.form_test.test+i; になにか問題が?? そして動いたのは動いたのですが スコアは全部で40点満点で、一問1点の予定なのですが なぜか一問7点だったり、15点だったりします。。 (問題によって点数が違う) for loopがおかしいのでしょうか?