1

我正在创建一个 PHP 应用程序,我想在其中为特定的测试部分设置 15 分钟的计时器。如果学生没有在 15 分钟内完成该部分,则分数将被保存,学生将被导航到下一个部分。

所以我想创建一个计时器并想显示当前的剩余时间。但我不知道如何实现它,如果我们使用 sleep() 函数,它也会中断其他函数的工作。

4

2 回答 2

2

您不能为此使用 PHP。如果你这样做了,那么它只会在页面加载时冻结页面 15 秒,然后告诉学生时间已过期。

因此,您应该像这样在 JavaScipt 中编写它:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script>
currentMinute = 0;
myTimer = setInterval(function () {
    if (currentMinute > 15) {
        clearInterval(myTimer);
        //send post data that the user's time is up
        return;
    }
    $.post("sendData.php", {
        "timeIsUp" : true
    }, function (data) {
        console.log("done sending time has expired to server");
    });
    currentMinute++;
}, 60 * 1000);
</script>
于 2017-03-11T06:22:43.353 回答
0

jQuery 将在这方面为您提供帮助...

使用下面的定时器功能

var hours1=0, minutes1=0, seconds1=0;

function calculate() {

setTimeout(calculate, 1000);
if((hours==0)&&(minutes==0)&&(seconds==0)){$('#submit-btn').trigger('click');} // HERE YOU CAN SWITCH TO NEXT QUESTION
h1 = makeTwoDigit(hours);   m1 = makeTwoDigit(minutes); s1 = makeTwoDigit(seconds);
h2 = makeTwoDigit(hours1);  m2 = makeTwoDigit(minutes1);    s2 = makeTwoDigit(seconds1);
$('title').html(h1+':'+m1+':'+s1);
$('#time-taken').val(h2+':'+m2+':'+s2);
$('#minutes').html(m1);
$('#seconds').html(s1);

seconds--; 
if (seconds < 0) { 
    seconds = 59; minutes--;

    if (minutes < 0) {
        hours--;
        minutes = 59;                        
    }
}
seconds1++; 
if (seconds1 > 59) { 
    seconds1 = 00; minutes1++;      
    if (minutes1 >59) {
        hours1++;
        minutes1 = 00;                        
    }
}

}

function makeTwoDigit(num) {
    if (num < 10) { return "0" + num;} return num;
}

谢谢

于 2017-03-11T06:38:06.780 回答