Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.12.2013, 01:30
Аспирант
Отправить личное сообщение для iskander83 Посмотреть профиль Найти все сообщения от iskander83
 
Регистрация: 04.05.2013
Сообщений: 73

Остановился таймер
есть такой таймер
<div id="timer">
            <div id="d"  class="blueDigit" style="display:none;">00</div>
    
                <div id="h"   class="blueDigit">00</div>
      <span>:</span>
                <div id="m"   class="blueDigit">00</div>
     <span>:</span>
                <div id="s"  class="redDigit">01</div>
              </div>
              <div class="timeWords" >
                <div id="ds" style="display:none;">дня</div>

                <div id="hs">часов</div>

                <div id="ms">минут</div>

                <div id="ss">секунд</div>
             
            </div>


на днях вдруг перестал работать, а это не есть хорошо, тк на нескольких сайтах он стоит, кто может помочь исправить проблему?
вот код
document.getElementsByTagName("body")[0].onload=setTimer;

function setTimer()
{
	var maxDays = 3;
	var time = "00:00:00"; 
	
    var now = new Date();	
	var date=now.getDate();
	var year=now.getFullYear();
	var month=now.getMonth()+1;
	if (month==12) month=0;
	switch(month) {
		case 0:month="January";break
		case 1:month="February";break
		case 2:month="March";break
		case 3:month="April";break
		case 4:month="May";break
		case 5:month="June";break
		case 6:month="July";break
		case 7:month="August";break
		case 8:month="September";break
		case 9:month="October";break
		case 10:month="November";break
		case 11:month="December";break
	}
	var daysReal=date%maxDays;
	var FullDate=year+","+month+",1";
    var endOfTimer = new Date(FullDate);//05:00:00"); "Jun,12,2015,"+
    var ms = (endOfTimer.getTime()-now.getTime());
	daysReal= Math.floor(ms/(1000*60*60*24));
    if (ms>1)
    {
        var sec=(parseInt(ms/1000));
        var days=(parseInt(sec/(24*60*60)));
        var secInLastDay=sec-days*24*3600;
        var hours=(parseInt(secInLastDay/3600));
        var secInLastHour=secInLastDay-hours*3600;
        var minutes=(parseInt(secInLastHour/60));
        var lastSec=secInLastHour-minutes*60;
		document.getElementById('d').innerHTML = daysReal;
		document.getElementById('h').innerHTML = ((hours<10)?(hours="0"+hours): hours);
		document.getElementById('m').innerHTML = ((minutes<10)?(minutes="0"+minutes): minutes);
		document.getElementById('s').innerHTML = ((lastSec<10)?(lastSec="0"+lastSec): lastSec);
		var daysStr = "дня";
		if(days==0 || days >= 5) daysStr = "дней"; else if(days==1)daysStr="день";
		var hourStr = "часов";
		if((hours>=2 && hours<=4) || hours>=22) hourStr="часа"; else if(hours==1 || hours==21) hourStr='час';
		var minStr="минут";
		if(minutes%10==1 && Math.floor(minutes/10)!=1) minStr="минута"; else if ((minutes%10>=2 && minutes%10<=4) && Math.floor(minutes/10)!=1) minStr="минуты";
		var secStr ="секунд";
		if(lastSec%10==1 && Math.floor(lastSec/10)!=1) secStr="секунда"; else if ((lastSec%10>=2 && lastSec%10<=4) && Math.floor(lastSec/10)!=1) secStr="секунды";
		document.getElementById('ds').innerHTML = daysStr;
		document.getElementById('hs').innerHTML = hourStr;
		document.getElementById('ms').innerHTML = minStr;
		document.getElementById('ss').innerHTML = secStr;
        setTimeout(setTimer,1000)
    }



}


он каждый месяц должен рестарт делать...
помогите професора!!!!!

Последний раз редактировалось iskander83, 02.12.2013 в 18:26.
Ответить с цитированием
  #2 (permalink)  
Старый 02.12.2013, 03:07
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

iskander83,
строка 12 скрипта подумай при каких условиях month может стать 12 и что случится тогда с year
если думать совсем неохота job

Последний раз редактировалось рони, 02.12.2013 в 03:09.
Ответить с цитированием
  #3 (permalink)  
Старый 02.12.2013, 18:26
Аспирант
Отправить личное сообщение для iskander83 Посмотреть профиль Найти все сообщения от iskander83
 
Регистрация: 04.05.2013
Сообщений: 73

я так и думал что ошибка тут, но как исправить?
и еще была ошибка в скрипте строка 11 вместо "+0" надо "+1" уже исправил...
но это делу не помогает...
Ответить с цитированием
  #4 (permalink)  
Старый 02.12.2013, 18:32
Аватар для lord2kim
Профессор
Отправить личное сообщение для lord2kim Посмотреть профиль Найти все сообщения от lord2kim
 
Регистрация: 03.05.2011
Сообщений: 848

Сообщение от iskander83 Посмотреть сообщение
я так и думал что ошибка тут, но как исправить?
и еще была ошибка в скрипте строка 11 вместо "+0" надо "+1" уже исправил...
но это делу не помогает...
у вас в конструкции switch максимальный номер месяца = 11, почему же тогда вы на 12 строке сравниваете его с 12 ?
раз вы исправили в 11 строке, то нужно исправлять в switch-е...
Ответить с цитированием
  #5 (permalink)  
Старый 02.12.2013, 18:51
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от lord2kim
то нужно исправлять в switch-е...
Сообщение от iskander83
"+1" уже исправил...
но это делу не помогает...


оба смотрите подсказку во 2 посте -- строка 11 исправлена строка 12 ещё нет ))) время пошло

Последний раз редактировалось рони, 02.12.2013 в 18:57.
Ответить с цитированием
  #6 (permalink)  
Старый 02.12.2013, 18:59
Аспирант
Отправить личное сообщение для iskander83 Посмотреть профиль Найти все сообщения от iskander83
 
Регистрация: 04.05.2013
Сообщений: 73

Время то идет.. А скрипт так и не работает...
Ответить с цитированием
  #7 (permalink)  
Старый 02.12.2013, 19:07
Аспирант
Отправить личное сообщение для iskander83 Посмотреть профиль Найти все сообщения от iskander83
 
Регистрация: 04.05.2013
Сообщений: 73

а вот так то заработало!!!
var year=now.getFullYear()+1;

10я строка.
Что скажете?
Ответить с цитированием
  #8 (permalink)  
Старый 02.12.2013, 19:07
Аватар для lord2kim
Профессор
Отправить личное сообщение для lord2kim Посмотреть профиль Найти все сообщения от lord2kim
 
Регистрация: 03.05.2011
Сообщений: 848

iskander83, наверное(((
например, почему у вас переменная daysReal 2 раза устанавливается (27, 31 строки)
проверьте что у вас записывается в переменную ms...
Ответить с цитированием
  #9 (permalink)  
Старый 02.12.2013, 19:12
Аспирант
Отправить личное сообщение для iskander83 Посмотреть профиль Найти все сообщения от iskander83
 
Регистрация: 04.05.2013
Сообщений: 73

скрипт то не я сам писал поэтому хз...
"проверьте что у вас записывается в переменную ms..." не умею, но факт что все вроде работает теперь....
Ответить с цитированием
  #10 (permalink)  
Старый 02.12.2013, 19:21
Аспирант
Отправить личное сообщение для iskander83 Посмотреть профиль Найти все сообщения от iskander83
 
Регистрация: 04.05.2013
Сообщений: 73

только очень странно работает теперь...
вот ссылка
дней показывает оставшихся до конца года - 363
НО!!! на локалке у меня показует как надо до конца месяца - 29!
почему?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Таймер обратного отсчёта useruser Элементы интерфейса 5 04.11.2013 07:29
Таймер обратного отчёта с выполнение по времени xakerd Элементы интерфейса 1 20.03.2013 00:10
Как сделать таймер как в САР? jelome Элементы интерфейса 0 27.06.2011 12:40
Таймер для слайдера (jQuery) RamPi Events/DOM/Window 0 23.05.2011 14:52
Как два раза вставить таймер alexvost Общие вопросы Javascript 2 08.02.2011 02:28