terkin
Мой дом здесь!
- Регистрация
- 9 Дек 2006
- Сообщения
- 513
- Реакции
- 200
- Автор темы
- #1
Есть такой скрипт который пишет сколько месяцев/дней/часов/минут осталось до определённой даты
Когда счётчик один на странице работает превосходно, а вот если попробывать создать несколько
То работает только тот который был объявлен последним, в чём загвоздка? фаербаг вроде не ругается
HTML:
<script type="text/javascript">
var Countdown =
{
timer: null,
init: function(id, until)
{
Countdown.node = document.getElementById(id);
Countdown.update(until);
Countdown.timer = setInterval(function()
{
Countdown.update(until);
}, 1000);
},
stop: function()
{
clearInterval(Countdown.timer);
return true;
},
update: function(until)
{
var s = Countdown.process(new Date(), until);
Countdown.node.innerHTML = s || Countdown.stop() && 'Всё :)';
},
difference: function(before, after)
{
if (after < before) return false;
var
days = after.getDate() - before.getDate(),
months = after.getMonth() - before.getMonth(),
years = after.getYear() - before.getYear(),
hms = (after / 1000 - before / 1000) % 86400,
seconds = Math.floor(hms % 60),
minutes = Math.floor(hms/60) % 60,
hours = Math.floor(hms/3600) % 60,
date = new Date();
if (days < 0)
{
date.setFullYear(before.getYear(), before.getMonth(), 32);
days += 32 - date.getDate();
months--;
}
if (months < 0)
{
months += 12;
years--;
}
return {
years: years,
months: months,
days: days,
hours: hours,
minutes: minutes,
seconds: seconds
};
},
process: function(before, after)
{
var diff = null, a = [], i = '';
if(!(diff = Countdown.difference(before, after))) return false;
for(i in diff)
{
if(!diff[i]) continue;
a.push('<span class="num">'
+ diff[i] +
'</span><span class="unit">'
+ Countdown.lang[i][Countdown.lang.choose( diff[i] )] +
'</span>');
}
return a.join(' ');
},
lang:
{
years: ['год', 'года', 'лет'],
months: ['месяц', 'месяца', 'месяцев'],
days: ['день', 'дня', 'дней'],
hours: ['час', 'часа', 'часов'],
minutes: ['минута', 'минуты', 'минут'],
seconds: ['секунда', 'секунды', 'секунд'],
choose: function(n)
{
var m = n % 100, i = 2;
if(m < 5 || 20 < m)
{
if((m %= 10) === 1)
{
i = 0;
}
else if(1 < m && m < 5)
{
i = 1;
}
}
return i;
}
}
};
window.onload = function()
{
Countdown.init('countbox', new Date(2008, 10, 29, 1, 1, 00));
};
</script>
</head>
<body>
<span id="countbox"></span>
</body>
</html>
HTML:
window.onload = function()
{
Countdown.init('countbox1', new Date(2008, 10, 29, 1, 1, 00));
Countdown.init('countbox2', new Date(2008, 10, 29, 1, 1, 00));
};
</script>
</head>
<body>
<span id="countbox1"></span>
<span id="countbox2"></span>
</body>
</html>