我试图建立一个在线测验,我完成了大部分工作 - 问题随机选择 从数据库中一次一个,用户输入/选择一个答案,有一个响应,另一个随机问题 弹出 - 我已经完成了所有这些,棘手的方面是如何将一个计时器(Javascript,我猜)附加到问题弹出的实例以及何时输入响应...任何关于如何做的一般指导此?
感谢。
答案 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中实现这一切,那么您可能需要使用cookies或session变量检出以存储特定用户每个问题所用的时间。
我希望这能让你开始朝着正确的方向前进。
答案 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);