我是一名老师,刚刚开始学习为我的学生编写在线测验的代码。我对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容器内。

关于javascript - 显示和计算javascript测验的分数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38488114/

10-11 12:41