设置在线测验的计时器


Setting Timer For Online Quiz

我正在尝试建立一个在线测试,我已经完成了大部分测试——问题是随机选择的从数据库中一次一个,用户输入/选择一个答案,有一个响应,另一个随机问题弹出-我已经完成了所有这些,棘手的方面是如何将计时器(我想是Javascript)附加到弹出问题的实例以及何时输入响应。。。关于如何做到这一点,有什么一般性的指导方针吗?

谢谢。

我将向您介绍如何为每个问题创建任何类型的计时器。我更喜欢使用使用setInterval()方法的仅限javascript的计时器,因为它很容易实现。我给出了一个示例片段,它每秒从0开始计数。您可以将其修改为倒计时计时器,以满足您的需求。JS中关于计时事件的相关文档。

var myVar = setInterval(function() {
  myTimer()
}, 1000);
var d = 0;
function myTimer() {
  document.getElementById("demo").innerHTML = d++;
}
<!DOCTYPE html>
<html>
<body>
  <p>A script on this page starts a timer:</p>
  <p id="demo"></p>
</body>
</html>

在开发javascript计时器时需要记住的一件事是考虑浏览器刷新。如果用户意外点击刷新或失去互联网连接,您需要密切关注计时器的"状态"。如果您使用的是javascript,您可能希望尝试在浏览器中内置本地存储来存储此值。所以在任何时候,你都会有这样的东西:

 // Store
  localStorage.setItem("lastTime", d); //In context of my code snippet
 // Retrieve
 var lastTime = localStorage.getItem("lastTime");

因此,您可以在尝试提问时跟踪意外故障,并正确计算该问题的总时间。然后,您可以将每个问题的这些时间保存到数据库中,或者向php脚本发出请求,该脚本对整个测试进行必要的编译和报告,但这在很大程度上取决于您的实现。

然而,如果您想在PHP中实现这整件事,那么您可能需要使用cookie或会话变量来存储特定用户每个问题所花费的时间。

我希望这能让你朝着正确的方向开始。

想要启动新检查时的自拍器:

request.getSession().setAttribute("totalNumberOfQuizQuestions",document.getElementsByTagName("totalQuizQuestions").item(0).getTextContent());
request.getSession().setAttribute("quizDuration",document.getElementsByTagName("quizDuration").item(0).getTextContent());
request.getSession().setAttribute("min",document.getElementsByTagName("quizDuration").item(0).getTextContent());
request.getSession().setAttribute("sec",0);