【问题标题】:How to make countdown in php如何在php中进行倒计时
【发布时间】:2023-02-14 18:27:33
【问题描述】:

我有这段代码,但它显示计时器正在计时,我想让它倒计时,但我不知道如何让它倒计时。 如果有人可以帮助我,我将不胜感激

$(document).ready(function(){
    var subId = $('#subId').val();
    var userId = $('#userId').val();
    var myVar = setInterval(myTimer, 1000);
    function myTimer(){
        $.ajax({
            type: 'POST',
            url: 'inc/ajax.php',
            data: { subId: subId, userId: userId },
            success: function(res) {
                if(res == 'Time out!'){
                    clearInterval(myVar);
                    $('#timer').html('Time over!');
                    $('#exampleModal').modal({
                        backdrop: 'static',
                        keyboard: false
                    });
                } else{
                    var time = res;
                    if(time < 60){
                        $('#timer').html('0:' + time);
                    } else if(time == 60){
                        $('#timer').html('1:00');
                    } else{
                        var min = Math.floor(time/60);
                        var sec = time % 60; 
                        if(min < 10 && sec < 10){
                            $('#timer').html(min + ':' + '0' + sec);
                        } else if(min >= 10 && sec < 10){
                            $('#timer').html(min + ':' + '0' + sec);
                        } else{
                            $('#timer').html(min + ':' + sec);
                        }
                    }
                }
            },
            error: function(jqXHR, textStatus, errorThrown){
                if(jqXHR){
                    $('#timer').html('<span class="animated flash infinite">Exam Paused!</span>');
                }
            }
        });
    }
});

【问题讨论】:

  • 什么确切地不使用所有这些代码?为什么这用 PHP 标记,但不包含任何此类代码?

标签: javascript php ajax countdown


【解决方案1】:

要使计时器倒计时而不是向上计数,您需要更改在 AJAX 请求的成功函数中计算时间变量的方式。您不需要从开始时间中减去当前时间,而是需要从最长时间中减去开始时间并显示剩余时间。

这是应该倒计时的代码的更新版本:

$(document).ready(function(){
    var subId = $('#subId').val();
    var userId = $('#userId').val();
    var totalTime = 60; // or whatever maximum time you want to set
    var remainingTime = totalTime;
    var myVar = setInterval(myTimer, 1000);
    
    function myTimer(){
        $.ajax({
            type: 'POST',
            url: 'inc/ajax.php',
            data: { subId: subId, userId: userId },
            success: function(res) {
                if(res == 'Time out!'){
                    clearInterval(myVar);
                    $('#timer').html('Time over!');
                    $('#exampleModal').modal({
                        backdrop: 'static',
                        keyboard: false
                    });
                } else{
                    remainingTime = totalTime - res; // calculate remaining time
                    if(remainingTime < 0){
                        remainingTime = 0; // prevent negative values
                    }
                    var min = Math.floor(remainingTime/60);
                    var sec = remainingTime % 60;
                    var timeStr = min + ':' + (sec < 10 ? '0' : '') + sec; // format time string
                    $('#timer').html(timeStr); // display remaining time
                }
            },
            error: function(jqXHR, textStatus, errorThrown){
                if(jqXHR){
                    $('#timer').html('<span class="animated flash infinite">Exam Paused!</span>');
                }
            }
        });
    }
});

请注意,此代码假定最大时间已知且固定,并且 AJAX 请求返回的 >res 变量表示自 >开始考试以来经过的时间。如果这些假设不适用于您的用例,您可能需要调整代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-05
    • 1970-01-01
    • 2022-06-26
    相关资源
    最近更新 更多