Скрипт для подсчета оставшегося времени / Таймер / на 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.
Вроде все:) Вопросы задаем в комментариях. И по традиции, ниже привожу пример.