2013-08-04 107 views
-1

我有幾個<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或東西超過1個對象的困惑和跨度產生怪異的值。

當第一個計時器達到零時,它應該重新加載。使用jQuery。 跨度數不固定。 我真的很想保持簡單,不要使用額外的插件或大腳本文件。

回答

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迭代從字符串

下面是一個得到一個整數Example-Fiddle工作。

+0

在小提琴,只有第一跨度減小。我需要所有跨度每秒減少1。 – DanFromGermany

+0

哦,我以爲這是想要的。查看我更新的代碼。 – nirazul

+0

啊,我看到你自己得到了;) – nirazul

1

我明白了。 本真的作品(fiddle):

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