前提・実現したいこと
JavaScriptで各問題に制限時間付き(10秒)のクイズを作ろうと考えています。
・回答ボタン・アラートのOKボタンを押すと前回分のアラートはリセットされ、リスタートする。
以上のようなことを実現したいと考えています。
よろしくお願いいたします。
該当のソースコード
Javascript
1<!DOCTYPE HTML> 2<html> 3<head> 4<meta charset="utf-8"> 5<title>暗算課題</title> 6</head> 7<body onload="disp()"> 8<h1>暗算課題1000-5</h1> 9<form id="form"> 10<input type="text" id="answer"> 11<input type="button" value="回答する" onclick="check()"> 12</form> 13 14<script type="text/javascript"> 15 16const start = 1000; 17const unit = 5; 18var cur = start; 19 20//回答 21function check(){ 22 if(document.getElementById("answer").value == (cur - unit)){ 23 alert("OK"); 24 cur -= unit; 25//次の問題に回答する 26 }else{ 27 alert("不正解です。もう一度最初から計算してください。"); 28//最初の問題に戻る 29 cur = start; 30 document.getElementById("answer").value = ""; 31} 32 33var alertmsg=function(){ 34alert("10秒経過しました。もう一度最初から計算してください。"); 35 } 36setInterval(alertmsg,10000); 37 38</script> 39</body> 40</html>
インデントはきちんと揃えられた方が良いです。
見た感じ、永遠に呼び出されない位置でメソッドを定義しているように見えます。
mts10806さんのいう通りかと思います。
また、要件確認ですが、
問題の回答をしてからタイマーがスタートするような書き方をされてますが、
そのような動きでよろしいですか?
もし違う場合、合っている場合でも、質問者さんが意図する、流れを、
ページにアクセス
↓
タイマースタート
などといった形で、フローチャート的なものも質問本文に記載いただくと、
回答がつきやすくなるかと思います。
(もしかしたら、フローチャート整理すると、自己解決にさえなるかも)
ご指摘ありがとうございました。ページにアクセスしてからタイマーがスタートするようにしたいと考えていたので、加筆修正致しました。
インデント変えたのはわかりますが、最初と、構文、まるっきり変わってますが・・・。
この状態からなら、タイマーセットでいけるかと思いますが、
ここから、タイマーを自分でくんではみましたか?
まだならば、一度自分でやってみて、それでもわからない部分が出れば、
再度コメントいただく形でいかがでしょうか?
(この状態で、タイマーうんぬんの構文を求める質問だと、丸投げに思われてしまう)
失礼いたしました。コード書きなおしてみましたが、回答ボタン・アラートのOKボタンを押したときにタイマーがリセット・リスタートする方法がわからない状態です…。
わかりました、調べた上で、ここまでやって、なら、
丸投げにはならないかと思います。
回答させていただきます。

回答2件
あなたの回答
tips
プレビュー