试图在在线测试网站上实现javascript计时器

时间:2017-04-17 17:43:49

标签: javascript php timer

大家好我想在我的在线测试项目中实现java脚本计时器,在教程的帮助下完成了所有编码,因为我不知道java脚本。计时器从数据库获取持续时间。 我面临两个问题,当我通过提交按钮移动到下一个问题时,计时器重置为初始值。另外我想设置当计时器结束并到达00:00:00时,(应显示警告框)&按下OK后它应该重定向到'testfinish.php'。到目前为止,我已完成以下编码: -

on teststart.php

<?php
$end='00:00:00';
$ftc=mysqli_query($connection,"select test_dur from test_detail where test_name='$tstnm1';");
$str=mysqli_fetch_array($ftc);
$dur=$str["test_dur"];
$_SESSION["dur"]=$dur;
$_SESSION["sttime"]=date("Y-m-d H:i:s");
$etime=$etime=date('Y-m-d H:i:s', strtotime('+'.$_SESSION["dur"].'minutes', strtotime($_SESSION["sttime"])));
$_SESSION["etime"]=$etime;
if($etime==$end)
{
header('location:testfinish.php');
}
}
?>

////同一页上的某些Javascript

<div id="response"> </div>

<script type="text/javascript">
setInterval(function()
{
    var xmlhttp=new XMLHttpRequest();
    xmlhttp.open("GET","response.php",false);
    xmlhttp.send(null);
    document.getElementById("response").innerHTML=xmlhttp.responseText;
},1000);
</script>

response.php

<?php
include '../connect.php';
$tstnm2=htmlentities($_SESSION['tstnm']);
$dur="";
$end='00:00:00';
$ftc=mysqli_query($connection,"select test_dur from test_detail where test_name='$tstnm2';");
$str=mysqli_fetch_array($ftc);
$dur=$str["test_dur"];

$_SESSION["dur"]=$dur;
$_SESSION["sttime"]=date("Y-m-d H:i:s");

$etime=$etime=date('Y-m-d H:i:s', strtotime('+'.$_SESSION["dur"].'minutes', strtotime($_SESSION["sttime"])));
$_SESSION["etime"]=$etime;

if($etime==$end)
{
    header('location:testfinish.php');
}

?>

1 个答案:

答案 0 :(得分:0)

您的代码有点难以阅读,但您可以考虑使用前一个计时器的值在每个页面上启动一个新计时器。您可能还发现在JavaScript中实现计时器更容易。这是我昨晚工作的一个:

http://codepen.io/WallyNally/pen/pPJVVY

timer = document.getElementById('time');
time = 120;

timer.innerHTML = "before";

function tick(t) {
  $i = t - .1;
  time = $i;
  timer.innerHTML = Math.ceil(time);
}
stopTime = setInterval(function() {
      if (time > -.1) {
      tick(time);
      } else {
        clearInterval(stopTime);
      }
    }, 100);

当用户按下提交时,让PHP收集<input type="hidden" id="time" name="time" value="{time}" />的值。您可以使用单独的可见元素向用户显示倒计时。

    <?php $_SESSION['hold_time'] = $_POST['time']?> 

    Then on the next page, set the timer to that saved value. 

    <script>
    timekeeper = document.getElementById('time');
    clock = document.getElementById('show-time');

    //Then use the function above with (clock).

    timekeeper.value = <?php echo $_SESSION['time']; ?>
    </script>

你在0点停下来的想法似乎是在正确的轨道上。