|
Обратный таймер
Привет всем!
В 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, время: 09:20. |
|