javascript - Flipclock js倒计时1小时无需重置

标签 javascript jquery countdown flipclock

我正在尝试进行倒计时而不重置刷新时间。我只需要倒计时 1 小时,但我不希望它在刷新时重置。从服务器获取当前时间和过期时间不起作用,因为我想通过单击重置该计时器。这是我当前的 js 代码:

<script>
    var clock;


    clock = $('.clock').FlipClock({
        clockFace: 'HourlyCounter',
        autoStart: false,
        callbacks: {
            stop: function() {
                $('.message').html('The clock has stopped!')
            },
        }
    });   
    clock.setTime(3600);
    clock.setCountdown(true);
</script>

最佳答案

是的,您可以根据您的示例使用 flipclock 来完成此操作 jquery-cookie 看看 1 minute countdown Example

flipclockinit()函数中将结束日期存储在cookie中,使用clock.setTime()初始化计时器,启用倒计时clock.setCountdown(true)并通过clock.start()启动它。

现在,如果用户刷新页面,我们将计时器设置为当前日期和结束日期之间的差值,这样计数器就可以正常继续倒计时:

var counter = $.cookie('endDate')-currentDate;
clock.setTime(counter);

单击重置按钮将通过删除cookie endDate并初始化倒计时功能来重置计数器。

HTML:

<div class="clock" style="margin:2em;"></div>
<div class="message"></div>
<button id='reset'>Reset</button>

JS:

//ready function
$(function(){

    countDown = function(){
        var currentDate = Math.round(new Date() / 1000);

        var clock = $('.clock').FlipClock({
            countdown: true,
            callbacks: {
                init: function() {
                    //store end date If it's not yet in cookies
                    if(!$.cookie('endDate')){
                        // end date = current date + 1 minutes
                        var endDate = Date.now() + 1*60*1000; 

                        // store end date in cookies
                        $.cookie('endDate', Math.round(endDate / 1000)); 
                    }
                },
                stop: function() {
                    $('.message').html('The clock has stopped!');
                },
            }
        });

        /* counter will be at first 1 min if the user refresh the page the counter will 
           be the difference between current and end Date, so like this counter can 
           continue the countdown normally in case of refresh. */
        var counter = $.cookie('endDate')-currentDate;

        clock.setTime(counter);
        clock.setCountdown(true);

        clock.start();
    }

    //reset button
    $('#reset').click(function(){
        $.removeCookie('endDate'); //removing end date from cookies
        countDown(); //launch countdown function
    });

    //Lanching count down on ready
    countDown();
});

在您的情况下(1小时),您只需将这一行中的 1 替换为 60 :

var endDate = Date.now() + 1*60*1000; // For you .... + 60*60*1000

关于javascript - Flipclock js倒计时1小时无需重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31670979/

相关文章:

javascript - jQuery(window).height() 不适用于移动浏览器

javascript - IIS反向代理到不同的服务器

javascript - 如何在 Node.js 中创建图像?

jquery - janrain 参与模态弹出窗口在 onProviderLoginToken 事件期间不会关闭

jquery - fancybox展示pdf

java - Android 问答游戏 - 每个问题的倒数计时器

javascript - 什么查询选择器找不到与另一个数组中的任何项目匹配的任何数组项目?

jquery - 如何从数字列表中逐个减去?

php - 使用单元格值作为参数将 javascript 函数应用于表格的每一行?

ios - 在自己的应用程序/ View 中接收本地通知(或如何在 SwiftUI 中注册 UNUserNotificationCenterDelegate)