| 
	| 
	
	| 
		
	| 
			
			 
			
				13.12.2011, 12:55
			
			
			
		 |  
	| 
		
			
			| Интересующийся       |  | 
					Регистрация: 22.10.2011 
						Сообщений: 23
					 
		
 |  |  
	| 
				Обратный таймер
			 Привет всем! 
В javascript профан, нужна очень помощь. 
Нужен скрипт таймера обратного отсчета(час, минута, секунда) с кнопкой пауза! 
Облазил весь интернет ничего подходящего найти не смог!   |  |  
	| 
		
	| 
			
			 
			
				13.12.2011, 13:01
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 10.12.2011 
						Сообщений: 290
					 
		
 |  |  
	| вам как удобнее, водить в функцию время с которого начнется обратный отсчет таймера? или вводить в функцию дату до которой будет отсчитывать таймер)? 			 Последний раз редактировалось Livanderiaamarum, 13.12.2011 в 13:47.
 |  |  
	| 
		
	| 
			
			 
			
				13.12.2011, 13:35
			
			
			
		 |  
	| 
		
			
			| Интересующийся       |  | 
					Регистрация: 22.10.2011 
						Сообщений: 23
					 
		
 |  |  
	| 
	
 
	| Сообщение от Livanderiaamarum   |  
	| вам как удобнее, водить в функцию время с которого начнется обратный отсчет таймера? или ввоодить дату до которой будет отсчитывать таймер)? |  
	
 Удобнее если время будет задаваться в самом скрипте а на экране будет виден только время и кнопка старт/пауза, т.е. первый раз запустил отсчет например 45 минут и далее пауза останавливает обратный отсчет и таже кнопка его возобновляет. |  |  
	| 
		
	| 
			
			 
			
				13.12.2011, 13:46
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 10.12.2011 
						Сообщений: 290
					 
		
 |  |  
	| 
ответь на вопрос?!
	
 
	| Сообщение от kuzkuz   |  
	| Удобнее если время будет задаваться в самом скрипте а на экране будет виден только время и кнопка старт/пауза, т.е. первый раз запустил отсчет например 45 минут и далее пауза останавливает обратный отсчет и таже кнопка его возобновляет. |  
	
 |  |  
	| 
		
	| 
			
			 
			
				13.12.2011, 13:54
			
			
			
		 |  
	| 
		
			
			| Интересующийся       |  | 
					Регистрация: 22.10.2011 
						Сообщений: 23
					 
		
 |  |  
	| 
	
 
	| Сообщение от Livanderiaamarum   |  
	| ответь на вопрос?! |  
	
 Ой извиняюсь, время с которого начнется обратный отсчет таймера |  |  
	| 
		
	| 
			
			 
			
				13.12.2011, 14:25
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 10.12.2011 
						Сообщений: 290
					 
		
 |  |  
	| СУТЬ ТАКОВА)!
есть обьект 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()
 			 Последний раз редактировалось Livanderiaamarum, 13.12.2011 в 14:31.
 |  |  
	| 
		
	| 
			
			 
			
				13.12.2011, 14:42
			
			
			
		 |  
	| 
		
			
			| Интересующийся       |  | 
					Регистрация: 22.10.2011 
						Сообщений: 23
					 
		
 |  |  
	| 
	
 
	| Сообщение от Livanderiaamarum   |  
	| СУТЬ ТАКОВА)! есть обьект 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" /> ?
			
			
	
			
			
			
			
			
				  |  |  
	| 
		
	| 
			
			 
			
				13.12.2011, 14:50
			
			
			
		 |  
	| 
		
			|  | junior       |  | 
					Регистрация: 29.11.2011 
						Сообщений: 3,924
					 
		
 |  |  
	| Тоже сделал вариант. В связи с чем вопрос: я задаю время в миллисекундах (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>
				__________________Чебурашка стал символом олимпийских игр. А чего достиг ты?
 Тишина - самый громкий звук
 			 Последний раз редактировалось nerv_, 13.12.2011 в 14:53.
 |  |  
	| 
		
	| 
			
			 
			
				13.12.2011, 14:51
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 10.12.2011 
						Сообщений: 290
					 
		
 |  |  
	| 
	
 
	| Сообщение от kuzkuz   |  
	| Отлично, спасибо ОГРОМНОЕ, в принципе все понятно! Чтобы вывести время например в <input> Что мне необходимо сделать(ну или в div)
 
 Для вывзова функции остановки и запуска таймера мне достаточно в свойстве кнопки указать  <input onclick="timer.pause()" type="button" /> ?
 |  
	
 да) конечно)  попробуйте все)) разберетесь)
 
timer([0,0,30], function(h,m,s){
   //вот тут время у тебя доступно как
   //h - часы
   //m - минуты
   //s - секунды
})
 |  |  
	| 
		
	| 
			
			 
			
				13.12.2011, 16:58
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 06.05.2009 
						Сообщений: 1,163
					 
		
 |  |  
	| nerv_,Потому, что у тебя видимо локальное время +3 стоит, у меня вот +4 и у меня 4 часа показываться)
 
				__________________Нужно равняться на лучших, а не оправдываться за счёт худших.
 |  |  |  |