Большой Воронежский Форум
» Обратная связь>Обратный отсчёт до Нового Года
SergKL 17:04 18.11.2011
Может всё таки стоит чуть переделать скрипт.
Как то режет взгляд «До Нового Года остался 43 день”
Например на вот так (тапками не кидать я в этом деле не профессионал)
Код:
      function nytime () {
        today = new Date();
        
        //BigDay = new Date("January 01, 2012");
        // Можно использовать более унивессальную конструкцию
        // IE и FF,GH, O по разному отрабатывают getYear()
         if (today.getMonth() != 0){   // счёт до, во всех месяцах кроме января
            BigDay= new Date(today.getYear()>1900?(today.getYear()+1):(today.getYear()+1901),0,1);
          } else {
            BigDay= new Date(today.getYear()>1900?(today.getYear()):(today.getYear()+1900),0,1);
         }
       
         //**********************************************
               
        msPerDay = 24 * 60 * 60 * 1000;
        
        timeLeft = (BigDay.getTime() - today.getTime());
        
        e_daysLeft = timeLeft / msPerDay;
        daysLeft = Math.floor(e_daysLeft);
        e_hrsLeft = (e_daysLeft - daysLeft)*24;
        hrsLeft = Math.floor(e_hrsLeft);
        e_minsLeft = (e_hrsLeft - hrsLeft)*60;
        minsLeft = Math.floor(e_minsLeft);
        secLeft = Math.floor((e_minsLeft - minsLeft)*60);

   //      if (daysLeft == 1, 21, 31) daytxt = ("день"), istxtd = ("остался");
  //      if ((daysLeft>1 && daysLeft<5) || (daysLeft>21 && daysLeft<25)) daytxt = ("дня"), istxtd = ("осталось");
  //      if ((daysLeft>=5 && daysLeft<21) || (daysLeft>=25 && daysLeft<31)) daytxt = ("дней"), istxtd = ("осталось");
  //      if ((daysLeft>=35 && daysLeft<41) || (daysLeft>=55 && daysLeft<61)) daytxt = ("дней"), istxtd = ("осталось");
  //      if ((daysLeft>61)) daytxt = ("дней"), istxtd = ("осталось");

  //      if (hrsLeft == 1, 21) hrstxt = ("час"), istxth = ("остался");
  //      if ((hrsLeft>1 && hrsLeft<5) || (hrsLeft>21 && hrsLeft<25)) hrstxt = ("часа"), istxth = ("осталось");
  //      if ((hrsLeft == 0) || (hrsLeft>=5 && hrsLeft<21)) hrstxt = ("часов"), istxth = ("осталось");

  //      if (minsLeft == 1, 21, 31, 41, 51) mintxt = ("минута"), istxtm = ("осталась");
  //      if ((minsLeft>1 && minsLeft<5) || (minsLeft>21 && minsLeft<25) || (minsLeft>31 && minsLeft<35) || (minsLeft>41 && minsLeft<45) || (minsLeft>51 && minsLeft<55)) mintxt = ("минуты"), istxtm = ("осталось");
  //      if ((minsLeft == 0) || (minsLeft>=5 && minsLeft<21) || (minsLeft>=25 && minsLeft<31) || (minsLeft>=35 && minsLeft<41) || (minsLeft>=45 && minsLeft<51) || (minsLeft>=55 && minsLeft<60)) mintxt = ("минут"), istxtm = ("осталось");

  //      if (secLeft == 1, 21, 31, 41, 51) sectxt = ("секунда");
   //     if ((secLeft>1 && secLeft<5) || (secLeft>21 && secLeft<25) || (secLeft>31 && secLeft<35) || (secLeft>41 && secLeft<45) || (secLeft>51 && secLeft<55)) sectxt = ("секунды");
    //    if ((secLeft == 0) || (secLeft>=5 && secLeft<21) || (secLeft>=25 && secLeft<31) || (secLeft>=35 && secLeft<41) || (secLeft>=45 && secLeft<51) || (secLeft>=55 && secLeft<60)) sectxt = ("секунд");

          //*************************************
            var ArrayO = ["остался", "осталось", "осталось"];
            var ArrayDay = ["день", "дня", "дней"];
            var ArrayHour = ["час", "часа", "часов"];
            var ArrayMin = ["минута", "минуты", "минут"];
            var ArraySec = ["секунда", "секунды", "секунд"];
            
            istxtd =  ArrayO[GetNumberStr(daysLeft)];
            // в принципе   istxth не очень и нужна в этом варианте
            istxth =  istxtd;       
          
            daytxt =  ArrayDay[GetNumberStr(daysLeft)];
            hrstxt =  ArrayHour[GetNumberStr(hrsLeft)];                                            
            mintxt =  ArrayMin[GetNumberStr(minsLeft)];
            sectxt  = ArraySec[GetNumberStr(secLeft)];
          //***************************************
          
        if (daysLeft>0)    {
              document.getElementById("countdown").innerHTML="До Нового Года "+istxtd+" <b>"+daysLeft+"</b> "+daytxt+", <b>"+hrsLeft+"</b> "+hrstxt+", <b>"+minsLeft+"</b> "+mintxt+" и <b>"+secLeft+"</b> "+sectxt+""
              setTimeout('nytime()',1000) 
        }
        if (daysLeft==0){
              //минуты в стандарты не укладываются :(
              if (minsLeft == 1, 21, 31, 41, 51){ istxtm = ("осталась"); } 
              else{ istxtm = ("осталось");  } 
              
              if (hrsLeft!=0)  {
                   document.getElementById("countdown").innerHTML="До Нового Года "+istxth+" <b>"+hrsLeft+"</b> "+hrstxt+" и <b>"+minsLeft+"</b> "+mintxt+" и <b>"+secLeft+"</b> "+sectxt+"";
                   setTimeout("nytime()",1000);
              } else {    
                  if (minsLeft==0) document.write( "До Нового Года остались считанные секунды!");
                  if (minsLeft==1) document.write( "До Нового Года осталась всего лишь минута!");
                  if (minsLeft!=0 && minsLeft!=1) {
                        time=("До Нового Года "+istxtm+" всего <b>"+minsLeft+"</b> "+mintxt+" и <b>"+secLeft+"</b> "+sectxt+"");
                        document.getElementById("countdown").innerHTML=time;
                  }
                  setTimeout("nytime()",1000);
              }
        }
        if (daysLeft<0)  {
               document.getElementById("till").innerHTML = "Поздравляем с новым "+ BigDay.getYear() +"-м годом!"; 
        };
}
       //Выбор окончания текстового поля 
      function GetNumberStr(N){   
      			if (N == 0) return 2;
            if (N % 10 == 1 && N != 11 ) { return 0; };
      			if (N % 10 == 2  || N % 10 == 3 || N % 10 == 4 ) {
      				if (N == 12 || N == 13 || N == 14) { 
      					return 2; 
      				}else return 1;
      			}
      			return 2;
      };
      //*******************************************************
function l() {
      //fall();
      nytime();
    }

window.onload=l
[Ответ]
Вверх