Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   как включить 3 таймера? (https://javascript.ru/forum/misc/40005-kak-vklyuchit-3-tajjmera.html)

iskander83 20.07.2013 23:50

как включить 3 таймера?
 
есть такой срипт таймера
$(function(){

	//-----------------------------------------
	var myVar;
	var dt;

	$.get('timer/datetime.php',function(res){
		dt = Date.parse($.trim(res));
		
		setR();
		myVar=setInterval(function(){setR()},1000);
	});

	function setR(){
		var dateX=dt;
		var d=new Date();
		var diff=dateX-d;
		unixdiff=Math.round(diff/1000);
		dayR=Math.floor(unixdiff/86400);
		hourR=Math.floor((unixdiff-dayR*86400)/3600);
		minuteR=Math.floor((unixdiff-dayR*86400-hourR*3600)/60);
		secondR=(unixdiff-dayR*86400-hourR*3600-minuteR*60);
		update(dayR+" ",hourR+" ",minuteR+" ",secondR+" ");
	}

	function update(d,h,m,s){
		var dc=[];
		var hc=[];
		var mc=[];
		var sc=[];
		dc[0]=d[0];dc[1]=d[1];if(d[1]==" "){dc[1]=d[0];dc[0]=0;}
		hc[0]=h[0];hc[1]=h[1];if(h[1]==" "){hc[1]=h[0];hc[0]=0;}
		mc[0]=m[0];mc[1]=m[1];if(m[1]==" "){mc[1]=m[0];mc[0]=0;}
		sc[0]=s[0];sc[1]=s[1];if(s[1]==" "){sc[1]=s[0];sc[0]=0;}
		chtime(1,dc[0]);
		chtime(2,dc[1]);
		chtime(3,hc[0]);
		chtime(4,hc[1]);
		chtime(5,mc[0]);
		chtime(6,mc[1]);
		chtime(7,sc[0]);
		chtime(8,sc[1]);
		$("#day").text(GetNoun(d,"ДЕНЬ","ДНЯ","ДНЕЙ"));
		$("#hour").text(GetNoun(h,"ЧАС","ЧАСА","ЧАСОВ"));
		$("#minute").text(GetNoun(m,"МИНУТА","МИНУТЫ","МИНУТ"));
		$("#second").text(GetNoun(s,"СЕКУНДА","СЕКУНДЫ","СЕКУНД"));
	}

	function GetNoun(number,one,two,five){
		number = Math.abs(number);
		number %= 100;
		if (number >= 5 && number <= 20) {return five}
		number %= 10;
		if(number == 1){return one}
		if(number >= 2 && number <= 4){return two}
			return five;
	} 

	function chtime(p,v){
		
		$("#t"+p).text(v);
		$("#t2"+p).text(v);
		$("#t3"+p).text(v);
	}


это его код хтмл
<div class="countdown-box">
				<div id="countdown">
					
					<div id="timer">
					    <div id="t1">0</div>
					    <div id="t2">0</div>
					    <div id="t3">0</div>
					    <div id="t4">0</div>
					    <div id="t5">0</div>
					    <div id="t6">0</div>
					    <div id="t7">0</div>
					    <div id="t8">0</div>
					    <div id="day">дней</div>
					    <div id="hour">часов</div>
					    <div id="minute">минут</div>
					    <div id="second">секунд</div>
					</div>
				</div>
			</div>


в файле date.ini написана только дата 2013-06-20

вот файл datetime.php
<?

$fn = 'date.ini';


$need = false;

if(file_exists($fn)){
	$date = file_get_contents($fn);
	$datenum = strtotime($date);
	$need = (!$datenum || (time() > $datenum));
}else{
	$need = true;
}


if($need){
	$date = date('Y-m-d',strtotime(date('Y-m-d'))+(3600*24*2));
	file_put_contents($fn,$date);
}

print str_replace('-','/',$date);


их на странице у меня 3 штуки, но надо чтобы каждый показывал разное время, например с разницей в 2 часа, кто что посоветует???

skrudjmakdak 22.07.2013 09:29

можно из текущей даты вычитать 2 часа, потом еще два часа. А вообще честно говоря задача не совсем понятна

iskander83 22.07.2013 16:48

пробовал так в 23 строке, но изменяется значение естественно везде
update(dayR+" ",hourR+2+" ",minuteR+" ",secondR+" ");

Ссылка на сайт http://okna023.ru/

skrudjmakdak 22.07.2013 16:53

Создаете класс. Потом создаете 3 экземпляра класса. при инициализации засовывайте туда 3 своих даты. а внутри можно дату можно разбить сплитом. и хранить отдельно часы, минуты, дни... и делать декримент при вызове setInterval

iskander83 22.07.2013 17:13

так то понятно но КАК это все сделать?

skrudjmakdak 22.07.2013 17:29

вот начал, дальше сами:
<!DOCTYPE html>
<html>
  <head>
  </head>
  <body>
    <script type="text/javascript">
	function times(time, _number)
		{
		var sp = time.split(':');
		return {
			number: _number,
			hour: sp[0],
			min: sp[1],
			sec: sp[2],
			start: function()
				{
				setInterval(function(ths)
					{
					return function()
						{
						console.log('номер: ' + ths.number + ' часы: ' + ths.hour + ' минуты: ' + ths.min + ' секунды: ' + ths.sec);
						ths.sec--;
						}
					}(this), 1000);
				}
			};
		}
		
	var t1 = times('12:43:45', 1);
	var t2 = times('10:43:45', 2);
	var t3 = times('9:43:45', 3);
	t1.start();
	t2.start();
	t3.start();
    </script>
  </body>
</html>


Часовой пояс GMT +3, время: 23:01.