Показать сообщение отдельно
  #2 (permalink)  
Старый 26.09.2011, 09:24
Аватар для systemiv
Профессор
Отправить личное сообщение для systemiv Посмотреть профиль Найти все сообщения от systemiv
 
Регистрация: 19.08.2011
Сообщений: 186

Написал вот такую функцию. Работает нормально, но хотелось бы уменьшить её объём
function updateTimer(warTime){
	var nowTime = Math.round(new Date().getTime() / 1000);
	if(warTime < nowTime){
		element.innerHTML = 'Голосование закончено.';
	}else{
		var day = Math.ceil((warTime - nowTime) / 86400);
		var dayRes = (warTime - nowTime) % 86400;
		if(day < 10) day = '0' + day;

		var hour = Math.ceil(dayRes / 3600);
		var hourRes = dayRes % 3600;
		if(hour < 10) hour = '0' + hour;

		var minute = Math.ceil(hourRes / 60);
		var minuteRes = hourRes % 60;
		if(minute < 10) minute = '0' + minute;

		var second = minuteRes;
		if(second < 10) second = '0' + second;

		element.innerHTML = 'Осталось: ' + day + declOfNum(day, [' День ', ' Дня ', ' Дней ']);
		element.innerHTML += hour +  declOfNum(hour, [' Час ', ' Часа ', ' Часов ']);
		element.innerHTML += minute +  declOfNum(minute, [' Минута ', ' Минуты ', ' Минут ']);
		element.innerHTML += second +  declOfNum(second, [' Секунда ', ' Секунды ', ' Секунд ']);
	}
	warTime--;
	setTimeout(updateTimer, 1000);
}

function declOfNum(number, titles){  
	cases = [2, 0, 1, 1, 1, 2];  
	return titles[(number % 100 > 4 && number % 100 < 20) ? 2 : cases[(number % 10 < 5) ? number % 10 : 5]];  
}
Ответить с цитированием