簡體   English   中英

顯示和計算javascript測驗的分數

[英]display and calculate score for javascript quiz

我是一名教師,剛開始學習編碼,為我的學生進行在線測驗。 我仍然非常喜歡JavaScript和php等編程,我試圖在線查找源代碼以幫助創建我的測驗。 我有兩個問題:1)。 我已經為測驗設置了一個計時器,但是每當時間到了,它只是不斷計數,我應該把它放在哪里

                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>

您的代碼對初學者來說足夠好,但需要一些改進。

<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容器內。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM