Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 轨道3中的倒计时时钟_Javascript_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Javascript 轨道3中的倒计时时钟

Javascript 轨道3中的倒计时时钟,javascript,ruby-on-rails,ruby-on-rails-3,Javascript,Ruby On Rails,Ruby On Rails 3,我正在开发一个测试引擎web应用程序。用户将有一定的时间回答问题。我想创建一个倒计时时钟,测试结束后再倒计时。我现在正在使用javascript,但在浏览器中面临刷新和后退按钮的问题。 以下是javascript: <script> function countDown (count) { if (count > 0) { var hours = Math.floor(count/3600) var minutes = Math.floor(co

我正在开发一个测试引擎web应用程序。用户将有一定的时间回答问题。我想创建一个倒计时时钟,测试结束后再倒计时。我现在正在使用javascript,但在浏览器中面临刷新和后退按钮的问题。 以下是javascript:

<script>
function countDown (count) {

  if (count > 0) {
      var hours = Math.floor(count/3600)
      var minutes =  Math.floor(count/60) - (hours*60)
      var seconds = count - (minutes * 60) - (hours*3600)

   var d = document.getElementById("countDiv");

      d.innerHTML = hours + ":" + minutes + ":" + seconds;
  else
   document.location = "test_finished.html";
}
countDown(<%=@totaltime%>);
</script>

函数倒计时(计数){
如果(计数>0){
var小时=数学楼层(计数/3600)
var分钟=数学楼层(计数/60)-(小时*60)
var秒数=计数-(分钟*60)-(小时*3600)
var d=document.getElementById(“countDiv”);
d、 innerHTML=小时+“:”+分钟+“:”+秒;
其他的
document.location=“test_finished.html”;
}
倒计时();

如何禁用刷新和后退按钮或其他解决方法???

您不能使用JavaScript强制执行此类操作


一种方法是在数据库中保存测试开始日期时间的记录,一旦用户开始测试,设置开始时间,在加载时使用它计算初始计时器值,这样您就可以使“返回”和“刷新”正常工作,并且倒计时器始终准确。

您无法可靠地禁用“返回”按钮和“刷新”按钮n或刷新。如果用户这样做,只需再次启动测试。与使用需要与rails后端通信的数据库不同,您可以将启动时间写入浏览器会话。但是,这可能很容易欺骗,因此db方法可能更好。我会按照Tomas说的做,使用ajax调用检查remai每10秒计算一次时间,剩余时间作为返回,并更新时钟(仍然使用js以正常方式继续倒计时),如果时间已过,则提交表单或其他内容。