2016-07-20 8 views
3

私は先生で、生徒のためのオンラインクイズを書くことを習得し始めました。私はまだJavaScriptやPHPのようなプログラミングには新しく、私はクイズを作成するのに役立つオンラインソースを探してみました。私は2つの質問があります: 1)。私は、クイズのためのタイマーを設定したが、時間がアップしている毎回とき、それはちょうど私が結果ページや他のページに私の学生をリダイレクトするjavascriptクイズの表示と計算

   if (parseInt(min) == 0) { 
        clearTimeout(tim); 
        location.href = ""; 

セクションに置くべきか、カウントを保持しますか?

(2)私のクイズは大部分が空白記入の質問で、各質問のポイントを保存してクイズの最後に生徒に合計得点を表示する方法がわかりますか?どうもありがとう!。

<html> 
<head> 

<script language ="javascript" > 
    var tim; 

    var min = 0; 
    var sec = 30; 
    var f = new Date(); 
    function f1() { 
     f2(); 
     document.getElementById("starttime").innerHTML = "Your started your quiz at " + f.getHours() + ":" + f.getMinutes(); 


    } 
    function f2() { 
     if (parseInt(sec) > 0) { 
      sec = parseInt(sec) - 1; 
      document.getElementById("showtime").innerHTML = "Your Left Time is :"+min+" Minutes ," + sec+" Seconds"; 
      tim = setTimeout("f2()", 1000); 
     } 
     else { 
      if (parseInt(sec) == 0) { 
       min = parseInt(min) - 1; 
       if (parseInt(min) == 0) { 
        clearTimeout(tim); 
        location.href = "www.rawlanguages.com"; 
       } 
       else { 
        sec = 60; 
        document.getElementById("showtime").innerHTML = "Your Left Time is :" + min + " Minutes ," + sec + " Seconds"; 
        tim = setTimeout("f2()", 1000); 
       } 
      } 

     } 
    } 

</script> 

    <title>Quiz</title> 
    <h1>P.1 Grammar Quiz</h1> 
    <body> 

    <div id="ques0" class="ques"> 
    <h2>Question</h2> 
    <p>She 
    <input type="text" name="answer0"/> a girl.</p> 
    </div> 

    <div id="ques1" class="ques"> 
    <h2>Question</h2> 
    <p>"is", "am" and "are" are</p> 
    <ul> 
    <li> 
     <input type="radio" name="answer1" value="Present tense" /> 
     <label>Present tense</label> 
    </li> 
    <li> 
     <input type="radio" name="answer1" value="Past tense" /> 
     <label>Past tense</label> 
    </li> 
    <li> 
     <input type="radio" name="answer1" value="Future tense" /> 
     <label>Future tense</label> 
    </li> 
    </ul> 
</div> 

<div id="ques2" class="ques"> 
<h2>Question</h2> 
<p>He 
<input type="text" name="answer2"/> a policeman. 
</p> 
</div> 


<a href="javascript:checkAnswer()">Check answer!</a> 

<script src="JQ.js"></script> 
<script src="function.js"></script> 

<body onload="f1()" > 
<form id="form1" runat="server"> 
<div> 
    <table width="100%" align="center"> 
    <tr> 
     <td colspan="2"> 

     </td> 
    </tr> 
    <tr> 
     <td> 
     <div id="starttime"></div> 

     <div id="endtime"></div> 

     <div id="showtime"></div> 
     </td> 
    </tr> 
    <tr> 
     <td> 





     </td> 

    </tr> 
    </table> 




</div> 
</form> 

</body> 
</head> 
</html> 
+0

文字列を解析していない限り、 'parseInt()'は必要ありません。あなたは今すぐどこからでもそれを削除することができます。 'min'は0で始まるので、' if(parseInt(min)== 0) 'は決して真ではなく、あなたは前の行でそれを1つ減らします。 – JJJ

+0

「ポイントを貯める」と言ったら、一時的に(ショーには十分長く)永久に(セメスターの最後に見えるほど長く)意味しますか? –

+0

これは生徒が練習するためのものですか? JSのみを使用している場合は、右クリックしてソース内で回答を見つけることができます。 PHPのようなサーバー側の言語を使用すると、回答がアクセス不能になります。 JavaScriptはクライアント側の言語なので、ユーザーがソースを読むことができます(つまり、右クリック>検査)。 – zer00ne

答えて

1

あなたのコードでは、初心者には十分であるが、それはいくつかの改善が必要です。 はここに私のコードです。

<script type="text/javascript" >//language ="javascript" is obsolete 
    //var tim; //no need at all 

    //var min = 0; //no need at all 
    //var sec = 30; //there is better way 
    //var f = new Date(); //no need to be global 
    function f1(sec) {//define (declare) sec as parameter 
     f2(); //call the function 
     var f = new Date(); 
     document.getElementById("starttime").innerHTML = "Your started your quiz at " + f.getHours() + ":" + f.getMinutes(); 
     var showtime = document.getElementById("showtime"); //used many times 
     //Here we put (closure) f2 
     function f2() { 
      //f2 knows sec from parent scope 
      if (sec <= 0) {//parseInt(sec) no need. sec is int 
      showtime.innerHTML = 'Time is over'; 
      //ShowAnswers(); //show on the same page or post to .php 
      return; 
      } 
      sec--;// = parseInt(sec) - 1; 
      showtime.innerHTML = "Your Left Time is :" + Math.floor(sec/60) +" Minutes ," + (sec % 60) +" Seconds"; 
      setTimeout(f2, 1000);//"f2()" is correct but this way is better 
     /* no need in remaining code 
     } 
     else { 
      if (parseInt(sec) == 0) { 
       min = parseInt(min) - 1; 
       if (parseInt(min) == 0) { 
        clearTimeout(tim); 
        location.href = "www.rawlanguages.com"; 
       } 
       else { 
        sec = 60; 
        document.getElementById("showtime").innerHTML = "Your Left Time is :" + min + " Minutes ," + sec + " Seconds"; 
        tim = setTimeout("f2()", 1000); 
       } 
      } 

     } 
     */ 
    }//f2 
}//f1 
</script> 

<body onload="f1(90)"><!--Here we send seconds to the function --> 

<h1>P.1...から始まるすべてのクイズがbodyコンテナ内でなければならないことに注意してください。

関連する問題