简单的多秒倒计时

时间:2013-08-04 22:02:33

标签: javascript jquery countdown

我有几个 <span class="timer">342</span>具有不同的值()。 我想倒计时所有人,并认为我可以做类似的事情:

            $('.timer').ready(function() {
                timer = setInterval(function() {
                    sec = $('.timer').text();
                    $('.timer').text(--sec);
                    if (sec == 0) {
                        clearInterval(timer);
                        location.href = 'accounts.php';
                    }
                }, 1000);
            });

错误是,Javascript因为.timer或其他东西的多个对象而感到困惑,并为跨度生成奇怪的值。

当第一个计时器达到零时,它应该重新加载。使用jQuery。 跨度数量不固定。 我真的很想保持简单,不要使用额外的插件或大脚本文件。

2 个答案:

答案 0 :(得分:1)

.ready仅用于document,并标记完全解析DOM的时间点。在此函数中,this指的是文档。我会用另一种方式写出来:

$(document).ready(function() {

    timer = setInterval(function() {
        $('.timer').each(function(){
            var $this = $(this);
            var countdown = parseInt($this.text()) - 1;

            $this.text(countdown);
            if (countdown == 0) {
                clearInterval(timer);
                location.href = 'accounts.php';
            }
        });
    }, 1000);
});

重要的:

  1. 使用.each遍历每个计时器
  2. 使用parseInt从字符串中获取整数
  3. 这是一个有效的 Example-Fiddle

答案 1 :(得分:1)

我自己得到了它。 这确实有用(fiddle):

            timer = setInterval(function() {
                $('.timer').each(function(index, el) {
                    sec = $(el).text();
                    $(el).text(--sec);
                    if (sec == 0) {
                        location.href = 'accounts.php';
                    }
                });
            }, 1000);