Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.03.2012, 00:38
Новичок на форуме
Отправить личное сообщение для dimentiy89 Посмотреть профиль Найти все сообщения от dimentiy89
 
Регистрация: 28.03.2012
Сообщений: 4

Помогите с таймером отсчета времени
Добрый день форумчане, столкнулся с проблемой.
Мне нужен цикличный таймер обратного отсчета до заданного времени.
Допустим он должен считать каждый день сколько времени осталось до 20:00
пробовал ковырять скрипт:
<html xmlns="http://www.w3.org/1999/xhtml">
 
<head>
 
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
 
<title>Âû÷èñëåíèå âðåìåíè äî Íîâîãî ãîäà by HTML.BY team</title>
 
<script type="text/javascript">
<!--
function newYearIn()
{
    var days=" äíåé "
    var now = new Date();
    var newYear = new Date("Mar,31,2012,00:00:00");
    var totalRemains = (newYear.getTime()-now.getTime());
    if (totalRemains>1)
    {
        var RemainsSec=(parseInt(totalRemains/1000));
          var RemainsFullDays=(parseInt(RemainsSec/(24*60*60)));
        if (
            RemainsFullDays==2 ||
            RemainsFullDays==3 ||
            RemainsFullDays==4 ||
            RemainsFullDays==22 ||
            RemainsFullDays==23 ||
            RemainsFullDays==24 ||
            RemainsFullDays==32 ||
            RemainsFullDays==33 ||
            RemainsFullDays==34
            ) {
            days=" äíÿ "
        }
        if (
            RemainsFullDays==1 ||
            RemainsFullDays==21 ||
            RemainsFullDays==31
            ) {
            days=" äåíü "
        }
          var secInLastDay=RemainsSec-RemainsFullDays*24*3600;
          var RemainsFullHours=(parseInt(secInLastDay/3600));
          if (RemainsFullHours<10){RemainsFullHours="0"+RemainsFullHours};
          var secInLastHour=secInLastDay-RemainsFullHours*3600;
          var RemainsMinutes=(parseInt(secInLastHour/60));
          if (RemainsMinutes<10){RemainsMinutes="0"+RemainsMinutes};
          var lastSec=secInLastHour-RemainsMinutes*60;
          if (lastSec<10){lastSec="0"+lastSec};
        var mcend = Date.parse("Jan 1, 2009, 00:00:00");
        var mcnow = now.getTime();
        var mc = ((mcend-mcnow)/10).toFixed(0).substr(8);
        document.getElementById('newyear').innerHTML = "Äî Íîâîãî Ãîäà îñòàëîñü: "+RemainsFullDays+days+RemainsFullHours+":"+RemainsMinutes+":"+lastSec+"."+mc;
          setTimeout("newYearIn()",10);
    }
      else {document.getElementById("newyear").innerHTML = "C ÍÎÂÛÌ ÃÎÄÎÌ !!!";}
}
//-->
</script>
 
</head>
 
<body onload="newYearIn();">
 
<span id="newyear"></span>

 
</body>
</html>



но ничего не получилось, на сайте detstvo.ru/ есть похожий таймер но у меня не получается его запустить, помогите пожалуйста.
Ответить с цитированием
  #2 (permalink)  
Старый 28.03.2012, 02:01
Профессор
Отправить личное сообщение для tadjik1 Посмотреть профиль Найти все сообщения от tadjik1
 
Регистрация: 07.06.2011
Сообщений: 315

<!doctype html>
<html>
	<head>
		<script>
			setInterval(checkDate, 100);
			
			var targetDate = new Date('Mar,31,2012,00:00:00'),
					days = ['день', 'дня', 'дней'],
					hours = ['час', 'часа', 'часов'],
					minutes = ['минута', 'минуты', 'минут'],
					secondsArray = ['секунда', 'секунды', 'секунд'];
			
			function checkDate(){
				
				var now = new Date(),
					remainSeconds = parseInt((targetDate - now)/1000),
					remainDays = '',
					remainHours = '',
					remainMinutes = '';
					if (remainSeconds > 0){
						remainDays = parseInt(remainSeconds/(24*60*60));
						remainHours = parseInt((remainSeconds - remainDays*24*60*60)/(60*60));
						remainMinutes = parseInt((remainSeconds - remainDays*24*60*60 - remainHours*60*60)/(60));
						seconds = parseInt(remainSeconds - remainDays*24*60*60 - remainHours*60*60 - remainMinutes*60);
						document.getElementById('pasteIt').innerHTML = remainDays + ' ' + getNumEnding(remainDays, days) + ', ' + remainHours + ' ' + getNumEnding(remainHours, hours) + ', ' + remainMinutes +' ' + getNumEnding(remainMinutes, minutes) + ', ' + seconds + ' ' + getNumEnding(seconds, secondsArray);
					} else {
						document.getElementById('pasteIt').innerHTML = 'Вы всё проспали';
					}
			}
			
			function getNumEnding(iNumber, aEndings){
				var sEnding, i;
				iNumber = iNumber % 100;
				if (iNumber>=11 && iNumber<=19) {
						sEnding=aEndings[2];
				}
				else {
						i = iNumber % 10;
						switch (i) {
								case (1): sEnding = aEndings[0]; break;
								case (2):
								case (3):
								case (4): sEnding = aEndings[1]; break;
								default: sEnding = aEndings[2];
						}
				}
				return sEnding;
			}
			
		</script>
	</head>
	<body>
		<p>Осталось: <span id="pasteIt"></span></p>
	</body>
</html>

Последний раз редактировалось tadjik1, 28.03.2012 в 02:14.
Ответить с цитированием
  #3 (permalink)  
Старый 28.03.2012, 10:04
Новичок на форуме
Отправить личное сообщение для dimentiy89 Посмотреть профиль Найти все сообщения от dimentiy89
 
Регистрация: 28.03.2012
Сообщений: 4

он же не так считает
Ответить с цитированием
  #4 (permalink)  
Старый 28.03.2012, 17:34
Лаборант :-)
Отправить личное сообщение для Pavel M. Посмотреть профиль Найти все сообщения от Pavel M.
 
Регистрация: 08.11.2011
Сообщений: 806

можно так
<p id="timer"></p>

<script>
var outTimer = document.getElementById('timer'),
	dateEnd = (new Date()).setHours(20, 0, 0); // сегодня 20:00

setInterval(function () {
  var diff = Math.round((dateEnd - new Date()) / 1000), // разница
	  text = '';
  
  if (diff < 0) {
	text = 'Время вышло';
  } else {
	text = 'До 20:00 осталось ' + Math.floor(diff / 3600) + ' час. ' +  Math.floor(diff / 60) % 60 + ' мин.';
  }
  
  outTimer.innerHTML = text;
  
}, 1000);
</script>
Ответить с цитированием
  #5 (permalink)  
Старый 28.03.2012, 20:03
Новичок на форуме
Отправить личное сообщение для dimentiy89 Посмотреть профиль Найти все сообщения от dimentiy89
 
Регистрация: 28.03.2012
Сообщений: 4

этот работает не циклично, мне нужно чтобы он каждый день показывал сколько осталось времени до 20:00
Ответить с цитированием
  #6 (permalink)  
Старый 29.03.2012, 07:29
Лаборант :-)
Отправить личное сообщение для Pavel M. Посмотреть профиль Найти все сообщения от Pavel M.
 
Регистрация: 08.11.2011
Сообщений: 806

т.е. в 20:01 он должен показывать, что осталось 23 часа 59 минут ?
Ответить с цитированием
  #7 (permalink)  
Старый 29.03.2012, 09:30
Профессор
Отправить личное сообщение для tadjik1 Посмотреть профиль Найти все сообщения от tadjik1
 
Регистрация: 07.06.2011
Сообщений: 315

<!doctype html>
<html>
	<head>
		<script>
			setInterval(checkDate, 100);
			
			var	days = ['день', 'дня', 'дней'],
				hours = ['час', 'часа', 'часов'],
				minutes = ['минута', 'минуты', 'минут'],
				secondsArray = ['секунда', 'секунды', 'секунд'],
				month = ['January','February','March','April','May','June','July','August','September','October','November','December'];
			 
			function checkDate(){
					 
				var now = new Date(),
					targetDate = new Date(month[now.getMonth()] +','+ now.getHours() < 20 ? now.getDate() : now.getDate()+1) +',2012,20:00:00');
					remainSeconds = parseInt((targetDate - now)/1000),
					remainDays = '',
					remainHours = '',
					remainMinutes = '';
					if (remainSeconds > 0){
							remainDays = parseInt(remainSeconds/(24*60*60));
							remainHours = parseInt((remainSeconds - remainDays*24*60*60)/(60*60));
							remainMinutes = parseInt((remainSeconds - remainDays*24*60*60 - remainHours*60*60)/(60));
							seconds = parseInt(remainSeconds - remainDays*24*60*60 - remainHours*60*60 - remainMinutes*60);
							document.getElementById('pasteIt').innerHTML = remainDays + ' ' + getNumEnding(remainDays, days) + ', ' + remainHours + ' ' + getNumEnding(remainHours, hours) + ', ' + remainMinutes +' ' + getNumEnding(remainMinutes, minutes) + ', ' + seconds + ' ' + getNumEnding(seconds, secondsArray);
					} else {
							document.getElementById('pasteIt').innerHTML = 'Вы всё проспали';
					}
			}
			 
			function getNumEnding(iNumber, aEndings){
					var sEnding, i;
					iNumber = iNumber % 100;
					if (iNumber>=11 && iNumber<=19) {
									sEnding=aEndings[2];
					}
					else {
									i = iNumber % 10;
									switch (i) {
													case (1): sEnding = aEndings[0]; break;
													case (2):
													case (3):
													case (4): sEnding = aEndings[1]; break;
													default: sEnding = aEndings[2];
									}
					}
					return sEnding;
			}
				 
		</script>
	</head>
    <body>
        <p>Осталось: <span id="pasteIt"></span></p>
    </body>
</html>

Последний раз редактировалось tadjik1, 29.03.2012 в 09:33.
Ответить с цитированием
  #8 (permalink)  
Старый 29.03.2012, 11:29
Лаборант :-)
Отправить личное сообщение для Pavel M. Посмотреть профиль Найти все сообщения от Pavel M.
 
Регистрация: 08.11.2011
Сообщений: 806

Сообщение от dimentiy89 Посмотреть сообщение
этот работает не циклично, мне нужно чтобы он каждый день показывал сколько осталось времени до 20:00
можно так
<p id="timer"></p>

<script>
var outTimer = document.getElementById('timer'), 
	secEnd = 20 * 3600, // секунд до 20:00
	serDay = 24 * 3600; // секунд в сутках

setInterval(function () {
  
  var curDate = new Date(),
	  curSec = curDate.getHours() * 3600 + curDate.getMinutes() * 60 + curDate.getSeconds(), // прошло секунд в этих сутках
	  diff = secEnd - curSec;
  
  if (diff < 0) { // если сейчас больше 20:00 
	diff = serDay + diff; // разница с сек. в сутках
  }

  outTimer.innerHTML = 'До 20:00 осталось ' + Math.floor(diff / 3600) + ' час. ' +  Math.floor(diff / 60) % 60 + ' мин.';
  
}, 1000);
</script>
Ответить с цитированием
  #9 (permalink)  
Старый 29.03.2012, 20:51
Новичок на форуме
Отправить личное сообщение для dimentiy89 Посмотреть профиль Найти все сообщения от dimentiy89
 
Регистрация: 28.03.2012
Сообщений: 4

спасибо огромное всем отозвавшимся! Всё работает!
Ответить с цитированием
  #10 (permalink)  
Старый 30.03.2012, 00:17
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

dimentiy89, пользуйтесь поиском по форуму перед тем, как задавать вопросы.
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите определить формат времени HackerSniper Общие вопросы Javascript 3 20.10.2011 18:25
Помогите со скриптом обратного отсчета GRAF-8269 Элементы интерфейса 0 16.06.2011 01:25
Помогите! "Не работает скрипт отсчета времени! Я нуб) Dobson Общие вопросы Javascript 4 28.05.2011 18:20
помогите с CheckBox (времени в обрез) sympler Элементы интерфейса 4 07.06.2010 13:37
Помогите с таймером -orex- Общие вопросы Javascript 8 01.12.2008 16:28