Скрипт для подсчета оставшегося времени / Таймер / на javascript

Скрипт для подсчета оставшегося времени / Таймер

Я уже приводил подобный скрипт, который выполняет те же самые функции, но на php. На мой взгляд, основной его минус в том, что он не динамичный. То есть обновляет оставшееся время только при обновлении страницы. Этот же (который я приведу чуть ниже) скрипт будет отсчитывать минуты, часы, дни и главное секунды независимо от состояния страницы. То есть можно находиться на странице, а таймер будет работать. Мне кажется, это здорово.

Итак, разберем сам скрипт.

<script>
var montharray=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")

function countdown(yr,m,d)
{
  theyear=yr;
  themonth=m;
  theday=d;

  var today=new Date()
  var todayy=today.getYear()
  if (todayy < 1000)
  todayy+=1900
  var todaym=today.getMonth()
  var todayd=today.getDate()
  var todayh=today.getHours()
  var todaymin=today.getMinutes()
  var todaysec=today.getSeconds()
  var todaystring=montharray[todaym]+" "+todayd+", "+todayy+" "+todayh+":"+todaymin+":"+todaysec
  futurestring=montharray[m-1]+" "+d+", "+yr
  dd=Date.parse(futurestring)-Date.parse(todaystring)
  dday=Math.floor(dd/(60*60*1000*24)*1)
  dhour=Math.floor((dd%(60*60*1000*24))/(60*60*1000)*1)
  dmin=Math.floor(((dd%(60*60*1000*24))%(60*60*1000))/(60*1000)*1)
  dsec=Math.floor((((dd%(60*60*1000*24))%(60*60*1000))%(60*1000))/1000*1)
  var tdays=" д. "
  var thours=" ч. "
  var tmin=" м. "
  var tsec=" c. "

  if (dday>4&&dday<21)
  {
    tdays=" дней "
  }
  else if((dday>1&&dday<5)||(dday%10>1&&dday%10<5))
  {
    tdays=" дня "
  }
  else if(dday==1||dday%10==1)
  {
    tdays=" день "
  }
  else if ((dday%10>4&&dday%10<=9)||dday%10==0)
  {
    tdays=" дней "
  }
  
  if (dhour>4&&dhour<21)
  {
    thours=" часов "
  }
  else if((dhour>1&&dhour<5)||(dhour%10>1&&dhour%10<5))
  {
    thours=" часа "
  }
  else if(dhour==1||dhour%10==1)
  {
    thours=" час "
  }
  else if ((dhour%10>4&&dhour%10<=9)||dhour%10==0)
  {
    thours=" часов "
  }

  if (dmin>4&&dmin<21)
  {
    tmin=" минут "
  }
  else if((dmin>1&&dmin<5)||(dmin%10>1&&dmin%10<5))
  {
    tmin=" минуты "
  }
  else if(dmin==1||dmin%10==1)
  {
    tmin=" минута "
  }
  else if ((dmin%10>4&&dmin%10<=9)||dmin%10==0)
  {
    tmin=" минут "
  }
  
  if (dsec>4&&dsec<21)
  {
    tsec=" секунд "
  }
  else if((dsec>1&&dsec<5)||(dsec%10>1&&dsec%10<5))
  {
    tsec=" секунды "
  }
  else if(dsec==1||dsec%10==1)
  {
    tsec=" секунда "
  }
  else if ((dsec%10>4&&dsec%10<=9)||dsec%10==0)
  {
    tsec=" секунд "
  }
  
  
  if (dday==0&&dhour==0&&dmin==0&&dsec==1)
  {
    document.forms.count.count2.value=current
    document.title = current
    return
  }
  else
  {
    document.forms.count.count2.value=dday+tdays+dhour+thours+dmin+tmin+dsec+tsec
    document.title = "До Нового 2020 года осталось "+dday+tdays+dhour+thours+dmin+tmin+dsec+tsec
    setTimeout("countdown(theyear,themonth,theday)",1000)
  }

}
//enter the count down date using the format year/month/day
countdown(2020,01,01)
</script>

* This source code was highlighted with Source Code Highlighter.

Важно знать 3 момента. 1 - нужная нам дата находится внизу - countdown(2020,01,01) - в формате год / месяц / день. 2 - заголовок для страницы задается здесь - document.title = "До Нового 2020 года осталось "+dday+tdays+dhour+thours+dmin+tmin+dsec+tsec (за ненадобностью можно удалить). И, 3, самое важное - вызов скрипта должен быть ПОСЛЕ того места, в котором будет отображаться оставшееся время.

Кстати, чуть не забыл, чтобы показать оставшееся время, нужно вставить следующий код:

<form name="count">
<input type="text" size="37" name="count2" >
</form>

* This source code was highlighted with Source Code Highlighter.

Вроде все:) Вопросы задаем в комментариях. И по традиции, ниже привожу пример.

Demo

26.07.13
Для просмотра сайта обновите браузер.