Есть несколько способов сделать это, но здесь есть простой метод функции jQuery ...
(function($){
$.fn.extend({
startTimer:function(){
// countdown elements
var _this = this;
// for padding numbers with leading zero
Number.prototype.pad=function(){
return (this<10?'0':'')+this;
}
var computeAndDisplay=function(){
//loop through countdown elements
$(_this).each(function(){
// get timestamp from ID attribute
var timestamp = parseInt($(this).attr('id').split('_').pop())*1000;
var differance = timestamp - new Date().getTime();
var hours = 0;
var minutes = 0;
var seconds = 0;
// if there is a positive difference
if(differance > 0){
//hours
if(differance >= 3600000){
hours = Math.floor(differance/3600000);
}
//minutes
if(differance >= 60000){
minutes = Math.floor(differance/60000)%60;
}
//seconds
if(differance >= 0){
seconds = Math.floor(differance/1000)%60;
}
$(this).html(hours.pad()+":"+minutes.pad()+":"+seconds.pad());
}else{
// if there is no positive difference, timer is done and you can
// do whatever to that countdown element here
}
});
};
//start timer
setInterval(computeAndDisplay,1000);
}
});
})(jQuery);
Этот метод просто полагается на ОДНУ функцию setInterval, которая проходит через многочисленные обратные отсчеты, в отличие от использованияотдельный вызов setInterval для каждого экземпляра обратного отсчета.Однако при этом мы должны сохранить наше начальное значение метки времени в идентификаторе каждого элемента html, чтобы мы могли извлекать его каждый раз.
<div class="countdown" id="cd_1_1332794014"></div>
<div class="countdown" id="cd_2_1332698014"></div>
<div class="countdown" id="cd_3_1332699014"></div>
Последний бит идентификатора - это метка времени unix из php,средняя часть не имеет отношения к функциональности, но существует для сохранения уникальности идентификаторов.
Чтобы запустить таймеры, достаточно просто позвонить ...
$(document).ready(function(){
$('.countdown').startTimer();
});