+152
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
/* mootools javascript */
function animateCd() {
$$('.countdown').each(function(el) {
var inp = $(el).getElement('.ts');
var time = +$(inp).get('text')-1;
$(inp).set('text', time);
var _time = Math.abs(time);
var h = Math.floor(_time/3600);
var _h = (h < 10 ? '0' : '') + h;
var m = Math.floor(_time/60)-h*60;
var _m = (m < 10 ? '0' : '') + m;
var s = _time-(h*3600+m*60);
var _s = (s < 10 ? '0' : '') + s;
var timeStr = _h+' : '+_m+' : '+_s;
if ( time < 0 ) {
timeStr = '- '+timeStr;
}
$(el).getElement('.timer_cd').set('text', timeStr);
});
setTimeout(animateCd, 1000);
}
animateCd();
<!-- html -->
<div class="countdown">
<div class="timer_cd"></div>
<div style="display: none" class="ts">7200</div>
</div>
"Для создания таймера будем отталкиваться от стартового времени указанного в секундах, в примере 7200 (2 часа). Сначала из скрытого блока <div style="display: none" class="ts">7200</div> вытягиваем текущее значение счетчика в секундах, декрементируем его и возвращаем туда новое значение. Потом разбиваем значение счетчика на часы, минуты и секунды, при этом формируя значения в двухзначном формате. Собираем все в кучу и вставляем полученную строку в блок <div class="timer_cd"></div>. Данную операцию повторяем раз в секунду setTimeout(animateCd, 1000);."
http://webbystep.ru/all-posts/16-js-clock/
Запостил: psycho-coder,
26 Августа 2013
1024-- 26.08.2013 14:03 # +3
kegdan 26.08.2013 14:07 # +1
1024-- 26.08.2013 14:28 # +2
Если подразумевается работа этого кода и перерисовка, то смею уведомить Вас, что всё очень плохо.
Скажем, если в хроме переключаться на другие вкладки, то выйдет совсем грустно:
kegdan 26.08.2013 14:33 # +2
psycho-coder 26.08.2013 14:40 # +1
Но тут, наверно, все еще ужасней.
http://jsfiddle.net/ZT8tv/
1024-- 26.08.2013 15:13 # +3
psycho-coder 26.08.2013 15:15 # +1
kegdan 26.08.2013 15:33 # +2
1024-- 26.08.2013 16:39 # +2
http://jsfiddle.net/HZZfr/
1024-- 26.08.2013 16:48 # +2
1024-- 26.08.2013 17:32 # +2
Попробовал вычислить сдвиг на следующий день (shift) с помощью
d = new Date, shift = (24 + d.getUTCHours() - d.getHours()) * 3600000
Теперь мой код работает в большем количестве случаев...
Всё же, даты в моих руках - зло.
psycho-coder 27.08.2013 11:32 # +2
Взял первый вариант твой.