设置在线测验的计时器

时间:2014-10-15 09:06:13

标签: javascript php timer

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

感谢。

2 个答案:

答案 0 :(得分:3)

我会告诉你如何为每个问题创建任何类型的计时器。我更喜欢使用仅使用setInterval()方法的javascript计时器,因为它很容易实现。我给了一个样本片段,它从每秒钟开始计数。您可以将其修改为倒数计时器以满足您的需要。 Relevant documentation关于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,则可能需要尝试在浏览器中内置local Storage来存储此值。所以在任何时候你都会有这样的事情:

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

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

如果您想在PHP中实现这一切,那么您可能需要使用cookiessession变量检出以存储特定用户每个问题所用的时间。

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

答案 1 :(得分:0)

自拍,当您想开始新的考试时:

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);