|
Обратный таймер
Привет всем!
В javascript профан, нужна очень помощь. Нужен скрипт таймера обратного отсчета(час, минута, секунда) с кнопкой пауза! Облазил весь интернет ничего подходящего найти не смог!:help: |
вам как удобнее, водить в функцию время с которого начнется обратный отсчет таймера? или вводить в функцию дату до которой будет отсчитывать таймер)?
|
Цитата:
|
Цитата:
ответь на вопрос?! |
Цитата:
|
СУТЬ ТАКОВА)!
есть обьект timer в него передается 2 аргумента 1) время которое нужно отсчитывать 2) функция которая будет выполняться каждую секунду timer(время, функция); время передается массивом, часы минуты секунды [1,15, 42] 1 час 15 минут 42 секунды. [0,0,10] 0 часов 0 минут 10 секунд. timer([0,0,10], функция) в нашу функцию будут передаваться 3 параметра, часы минуты и секунды обратного отсчета. и их можно естественно использовать внутри её. то есть нужно писать так timer([0,0,10] , function(часы, минуты, секунды) { alert(часы) } ) обьект timer имеет методы pause() и start() просто нужно написать timer.pause() // приостановка timer.start() // запуск с приостановленного места
function timer(_time, _call){
timer.lastCall = _call
timer.lastTime = _time
timer.timerInterval = setInterval(function(){
_call(_time[0],_time[1],_time[2]);
_time[2]--
if(_time[0]==0 && _time[1]==0 && _time[2]==0){
timer.pause()
_call(0,0,0);
}
if(_time[2]==0){
_time[2] = 59
_time[1]--
if(_time[1]==0){
_time[1] = 59
_time[0]--
}
}
timer.lastTime = _time
}, 1000)
}
timer.pause = function(){
clearInterval(timer.timerInterval)
}
timer.start = function(){
timer(timer.lastTime, timer.lastCall)
}
//сверху мое, а тут уже ваше)
//тут мы начинаем таймер. передаем массив с временем и функцию которая будет вызываться каждую секунду
timer([0,0,7], function(h,m,s){
alert(h + ':' +m + ':' +s) // алертнуть часы минуты и секунды
})
timer.pause()
timer.start()
|
Цитата:
Чтобы вывести время например в <input> Что мне необходимо сделать(ну или в div) Для вывзова функции остановки и запуска таймера мне достаточно в свойстве кнопки указать <input onclick="timer.pause()" type="button" /> ? |
Тоже сделал вариант. В связи с чем вопрос: я задаю время в миллисекундах (30 сек), т.е. по идее должно отображаться только 30 сек. Откуда там 3 часа берется?)))
p.s.: с датой работаю буквально второй раз :)
<html>
<head>
<meta charset="utf-8">
<style type="text/css">
</style>
<script type="text/javascript">
var x = new Date().getTime() + 30000;
function backTimer() {
var j = document.getElementsByTagName('div')[0];
var i = new Date().getTime();
if(i < x) {
j.innerHTML = new Date(x - i).toLocaleTimeString();
setTimeout(backTimer, 500);
} else {
j.innerHTML = "00:00:00";
}
}
</script>
</head>
<body onload="backTimer();">
<div></div>
</body>
</html>
|
Цитата:
timer([0,0,30], function(h,m,s){
//вот тут время у тебя доступно как
//h - часы
//m - минуты
//s - секунды
})
|
nerv_,
Потому, что у тебя видимо локальное время +3 стоит, у меня вот +4 и у меня 4 часа показываться) |
| Часовой пояс GMT +3, время: 18:25. |
|