Вход

Просмотр полной версии : как включить 3 таймера?


iskander83
20.07.2013, 23:50
есть такой срипт таймера

$(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>