【问题标题】:Countdown Timer - Remove DIV when reaches Zero倒数计时器 - 达到零时删除 DIV
【发布时间】:2012-11-01 03:36:50
【问题描述】:

我想知道如何在屏幕上设置倒数计时器,当它达到零时,它会删除特定的 DIV。

基本上我正在设计一个一次性报价的报价页面,他们必须在一个时间范围内做出响应,否则它将永远消失。

我有一个名为 #offer-wrapper 的 div 和一个名为 #offer-timer 的 div。第二个 div 中的计时器应该会导致第一个 div 从页面中删除。

可以从获取 HTML/JS 倒计时脚本开始,但从那里我迷路了,请指教谢谢 :)

编辑。如果可能的话,还有什么可以阻止用户刷新页面?

【问题讨论】:

    标签: html timer countdown


    【解决方案1】:

    您可以使用 window.setInterval 结合一个简单的函数来更新全局变量,然后使用 jQuery 的 .remove() 函数(或者甚至只是将 CSS 设置为 display:none)

    var time = 60;
    
    window.setInterval(test, 1000);
    
    function test()
    {
        //update time
        time -=1;
        //update the div to show the time
        $('#testDiv').html(time); 
    
        //hide the div if the time is 0
        if(time == 0)        
        {
            $('#testDiv').remove();
        }
    }
    

    jsFiddle = http://jsfiddle.net/9sAce/

    【讨论】:

    • 谢谢,我怎样才能让用户无法刷新以再次查看优惠? Cookie 不知何故?
    • 根据您的要求,您可能无法使用 Cookie。 Cookie 可以在客户端轻松清除。如果您没有登录帐户,那么您可以考虑通过 IP 将状态保存在数据库中......但是它也很容易更改和 IP。确保 100% 同一用户帐户不会两次获得“优惠”的唯一方法是在计时器到期时触发 AJAX 请求,以更新该登录帐户已经看到该优惠的数据库。查看jQuery Ajax
    【解决方案2】:
    $(document).ready(function() {
    
        jQuery.fn.countDown = function(settings, to) {
            settings = jQuery.extend({
                startFontSize : '40px',
                endFontSize : '12px',
                duration : 1000,
                startNumber : 10,
                endNumber : 0,
                callBack : function() {
                }
            }, settings);
            return this.each(function() {
    
                if (!to && to != settings.endNumber) {
                    to = settings.startNumber;
                }
    
                // Set the countdown to the starting number
                $(this).text(to).css('fontSize', settings.startFontSize);
    
                // Loopage
                $(this).animate({
                    'fontSize' : settings.endFontSize
                }, settings.duration, '', function() {
                    if (to > settings.endNumber + 1) {
                        $(this).css('fontSize', settings.startFontSize).text(to - 1).countDown(settings, to - 1);
                    } else {
                        settings.callBack(this);
                    }
                });
    
            });
        };
    
        $('#countdown').countDown({
            startNumber : 100,
            callBack : function(me) {
                $('#countdown').remove();
                alert("TIME IS OVER!!");
            }
        });
    
    });
    

    【讨论】:

    • 谢谢,我怎样才能让用户无法刷新以再次查看优惠? Cookie 不知何故?
    • 您也可以将计时器代码放入 window.location.reload() 中。我想它会起作用的。不过不确定!
    • 抱歉,我对 javascript 的了解非常有限。你能详细说明一下吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多