- ベストアンサー
ページをまたがっての経過時間
JavaScript超初心者です。 クイズ問題を作成したのですが、クイズを全問解くまでの 経過時間を表示するようにしたいのですが、どなたか教えて いただけますでしょうか。 具体的には、あるページを開いて時から測定し、1問目の4択を選択すると 2ページ目の2問目が表示し、解答を選択すると3ページ目の3問目が表示・・・ これを10問(10ページ)まで終了すると、11ページ目の正解率と経過時間を表示するように考えています。 1ページから10ページまでの表示、11ページの正解率はできたのですが、経過時間が本で調べてもわかりませんでした。 どなたかよろしくお願いいたします。 ※1ページ目の内容です(これが10ページ分あります) ↓ <p>Q1.現在は西暦何年?</p> <ol> <li>2006</li> <li>2007</li> <li>2008</li> <li>2009</li> </ol> <script language="JavaScript"> var answers = location.search; var nextpage = "2.html?"; var select1 = "Q11"; var select2 = "Q12"; var select3 = "Q13"; var select4 = "Q14"; document.write('[ <a href="' + nextpage + answers + select1 + '">選択肢 1</a> ] '); document.write('[ <a href="' + nextpage + answers + select2 + '">選択肢 2</a> ] '); document.write('[ <a href="' + nextpage + answers + select3 + '">選択肢 3</a> ] '); document.write('[ <a href="' + nextpage + answers + select4 + '">選択肢 4</a> ] '); </script> <noscript> ※JavaScript機能がOFFの場合、回答用リンクを生成できません。 ページ末のページ番号をクリックしてお進み下さい。 </noscript> 最後の11ページに経過時間を表示したいのですが 現在はこんな内容です。 ↓ <p>成績発表~</p> <script language="JavaScript"> var answers = location.search; var trues = 0; var questions = 10; /* 問題数 */ document.write('<table border="1" cellpadding="3" cellspacing="0">'); /* ▼1問目 */ document.write('<tr><th>1問目</th>'); if( answers.indexOf("Q12") >= 0 ) { /* 正答の場合 */ document.write('<td>○</td>'); trues++; } else { /* 誤答の場合 */ document.write('<td>×</td>'); } document.write('<td><a href="kaisetsu.html#a1">第1問目の解説</a></td></tr>'); /* ▼2問目 */ document.write('<tr><th>2問目</th>'); if( answers.indexOf("Q21") >= 0 ) { /* 正答の場合 */ document.write('<td>○</td>'); trues++; } else { /* 誤答の場合 */ document.write('<td>×</td>'); } document.write('<td><a href="kaisetsu.html#a2">第2問目の解説</a></td></tr>'); //この内容が10問目まであります /* ▼10問目 */ document.write('<tr><th>10問目</th>'); if( answers.indexOf("Q104") >= 0 ) { /* 正答の場合 */ document.write('<td>○</td>'); trues++; } else { /* 誤答の場合 */ document.write('<td>×</td>'); } document.write('<td><a href="kaisetsu.html#a10">第10問目の解説</a></td></tr>'); document.write('</table>'); /* 集計 */ document.write('<br>正答数 ' + trues + '問 / 正答率 ' + trues*100/questions + '%'); /* メッセージ */ if( trues >= 10 ) { document.write('おめでとうございます! 全問正解です!'); } else if( trues >= 7 ) { document.write('おしいっ! あと一歩ですね。'); } else if( trues >= 5 ) { document.write('半分は越えましたね。あと少しがんばりましょう。'); } else { document.write('がんばりましょう。'); } </script> <noscript> ※JavaScript機能がOFFの場合、成績結果を生成できません。 全問題の<a href="kaisetsu.html">解説はこちら</a>です。 </noscript>
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
最初のページで時間を記録したクッキーを発行し、2ページ目からはそのクッキーを読み取る、という形で経過時間が取得出来ると思います。 Cookieが使えない場合は駄目です。 Cookieが使えない場合はページ遷移の時にリンクに変数(開始時間)を埋込むと言う方法も出来ますね。 例えばリンク先を var time = new Date(); document.write("<a href=\"hogehoge.html?time="+time.getTime()+"\">次の問題</a>"); のように動的に書いておき、 location.searchで取得すると言った具合です。
その他の回答 (1)
- ANASTASIAK
- ベストアンサー率19% (658/3306)
フレームにすればよいです。
お礼
私のために時間を割いていただき、ありがとうございます。