Javascript.RU

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

Таймер отсчета времени с кнопками
Вот есть пример таймера, при обновлении страницы таймер продолжает отсчет времени, при закрытии браузера таймер сбивается.
Нужно сделать чтобы при обновлении страницы и при новом открытии браузера таймер продолжал свой отсчет.
Пример: я зашел на страницу в 12 часов дня установил в поле часы число 24 и нажал на кнопку "запустить обратный отсчет", закрыл браузер, выключил комп, прихожу через час включаю комп захожу на страницу и вижу что таймер показывает уже 23 часа и продолжает отсчет.
Также нужно сделать чтобы на странице можно было запустить несколько таймеров не зависящих друг от друга.
Скрипт будет вставлен на html странице, php мне НЕ НАДО без всяких баз данных.
На втором коде показано как примерно должна выглядеть страница в рабочем состоянии.

Мой ящик Denisich84@mail.ru
Цена в районе 300WMR

1 скрипт

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251">
<style>
#set_timer, #timer, #stop_timer {display: none}
#timer {color: black}
</style>
<script>
var FINAL, TIMER;
onload = function ()
{
with (document)
   {
   _CS = getElementById ('cS'); SS_ = getElementById ('sS');
   _CM = getElementById ('cM'); SM_ = getElementById ('sM');
   _CH = getElementById ('cH'); SH_ = getElementById ('sH');
   _CD = getElementById ('cD'); SD_ = getElementById ('sD');
   }
var dC = unescape (document.cookie);
if (dC.indexOf ('type=1') < 0)
   {document.getElementById ('set_timer').style.display = 'block'; SD_.focus ()}
else
   {
   var pm = dC.split ('; ');
   for (var j = 0, lj = pm.length; j < lj; j++)
   if (pm [j].indexOf ('type=1+') == 0) {FINAL = pm [j].split ('+') [1]; break}
   var cT = parseInt (new Date ().valueOf () / 1000, 10);
   var d = FINAL - cT;
   document.getElementById ('txt').innerHTML = (d >= 0) ? 'До конца света осталось' : 'После конца света прошло';
   if (d < 0) {d *= -1; document.getElementById ('timer').style.color = 'red'}
   var s = d % 60; d -= s; d /= 60; _CS.innerHTML = s; 
   var m = d % 60; d -= m; d /= 60; _CM.innerHTML = m; 
   var h = d % 24; d -= h; d /= 24; _CH.innerHTML = h; _CD.innerHTML = d;
   with (document)
      {
      getElementById ('timer').style.display = 'block';
      getElementById ('stop_timer').style.display = 'inline';
      }
   TIMER = setTimeout ('FuncTimer ()', 1000);
   }
}

function FuncSetTimer ()
{
var sDv = SD_.value, sHv = SH_.value, sMv = SM_.value, sSv = SS_.value;
if (sDv.replace (/\d/g, '').length || sHv.replace (/\d/g, '').length ||
sMv.replace (/\d/g, '').length || sSv.replace (/\d/g, '').length) return;
var per = ((sDv) ? sDv : 0) * 24 * 60 * 60 + ((sHv) ? sHv : 0) * 60 * 60 +
          ((sMv) ? sMv : 0) * 60           + ((sSv) ? sSv : 0) * 1;
var cT = new Date ().getTime ();
FINAL = per + parseInt (cT / 1000, 10);
document.cookie = escape ('type=1+' + FINAL + '; expires=' + (cT + 180 * 24 * 60 * 60* 1000));
_CS.innerHTML = (sSv) ? sSv : 0; _CM.innerHTML = (sMv) ? sMv : 0; 
_CH.innerHTML = (sHv) ? sHv : 0; _CD.innerHTML = (sDv) ? sDv : 0; 
with (document)
   {
   getElementById ('set_timer').style.display = 'none';
   getElementById ('txt').innerHTML = 'До конца света осталось';
   getElementById ('timer').style.display = 'block';
   getElementById ('stop_timer').style.display = 'inline';
   }
TIMER = setTimeout ('FuncTimer ()', 1000);
}

function FuncTimer ()
{
var cT = parseInt (new Date ().valueOf () / 1000, 10);
var cDv = _CD.innerHTML, cHv = _CH.innerHTML, cMv = _CM.innerHTML, cSv = _CS.innerHTML;
if (cT <= FINAL)
   {
   cSv = (cSv != 0) ? --cSv : 59;
   if (cSv == 59) cMv = (cMv != 0) ? --cMv : 59;
   if (cSv == 59 && cMv == 59) cHv = (cHv != 0) ? --cHv : 23;
   if (cSv == 59 && cMv == 59 && cHv == 23 && cDv != 0) --cDv;
   }
else
   {
   document.getElementById ('txt').innerHTML = 'После конца света прошло';
   document.getElementById ('timer').style.color = 'red';
   cSv = (cSv != 59) ? ++cSv : 0;
   if (cSv == 0) cMv = (cMv != 59) ? ++cMv : 0;
   if (cSv == 0 && cMv == 0) cHv = (cHv != 23) ? ++cHv : 0;
   if (cSv == 0 && cMv == 0 && cHv == 0 && cDv) ++cDv;
   }
_CS.innerHTML = cSv; _CM.innerHTML = cMv;
_CH.innerHTML = cHv; _CD.innerHTML = cDv;
TIMER = setTimeout ('FuncTimer ()', 1000);
}

function FuncStopTimer ()
{
clearTimeout (TIMER); FINAL = 0;
SD_.value = ''; SH_.value = ''; SM_.value = ''; SS_.value = '';
with (document)
   {
   cookie = escape ('type=0+0; expires=1000');
   getElementById ('timer').style.display = 'none';
   getElementById ('timer').style.color = 'black';
   getElementById ('stop_timer').style.display = 'none';
   getElementById ('set_timer').style.display = 'block';
   }
}
</script>
</head>
<body>
<div id="set_timer">
Установите продолжительность отсчёта:
<p>дни: <input id="sD">
<p>часы: <input id="sH">
<p>минуты: <input id="sM">

<p>секунды: <input id="sS">
<p><input type="button" value="Запустить обратный отсчёт" onclick="FuncSetTimer ()">
</div>

<div id="timer">
<span id="txt"></span>: <span id="cD"></span> дн., <span id="cH"></span> час., <span id="cM"></span> мин., <span id="cS"></span> сек.
</div>

<input id="stop_timer" type="button" value="Остановить отсчёт" onclick="FuncStopTimer ()">
</body>
</html>

Последний раз редактировалось denisich84, 13.02.2012 в 16:09.
Ответить с цитированием
  #2 (permalink)  
Старый 12.02.2012, 18:11
Интересующийся
Отправить личное сообщение для denisich84 Посмотреть профиль Найти все сообщения от denisich84
 
Регистрация: 10.02.2012
Сообщений: 18

2.
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251">
<style>
#set_timer, #timer, #stop_timer {display: none}
#timer {color: black}
</style>
<script>
var FINAL, TIMER;
onload = function ()
{
with (document)
   {
   _CS = getElementById ('cS'); SS_ = getElementById ('sS');
   _CM = getElementById ('cM'); SM_ = getElementById ('sM');
   _CH = getElementById ('cH'); SH_ = getElementById ('sH');
   _CD = getElementById ('cD'); SD_ = getElementById ('sD');
   }
var dC = unescape (document.cookie);
if (dC.indexOf ('type=1') < 0)
   {document.getElementById ('set_timer').style.display = 'block'; SD_.focus ()}
else
   {
   var pm = dC.split ('; ');
   for (var j = 0, lj = pm.length; j < lj; j++)
   if (pm [j].indexOf ('type=1+') == 0) {FINAL = pm [j].split ('+') [1]; break}
   var cT = parseInt (new Date ().valueOf () / 1000, 10);
   var d = FINAL - cT;
   document.getElementById ('txt').innerHTML = (d >= 0) ? 'До конца света осталось' : 'После конца света прошло';
   if (d < 0) {d *= -1; document.getElementById ('timer').style.color = 'red'}
   var s = d % 60; d -= s; d /= 60; _CS.innerHTML = s; 
   var m = d % 60; d -= m; d /= 60; _CM.innerHTML = m; 
   var h = d % 24; d -= h; d /= 24; _CH.innerHTML = h; _CD.innerHTML = d;
   with (document)
      {
      getElementById ('timer').style.display = 'block';
      getElementById ('stop_timer').style.display = 'inline';
      }
   TIMER = setTimeout ('FuncTimer ()', 1000);
   }
}

function FuncSetTimer ()
{
var sDv = SD_.value, sHv = SH_.value, sMv = SM_.value, sSv = SS_.value;
if (sDv.replace (/\d/g, '').length || sHv.replace (/\d/g, '').length ||
sMv.replace (/\d/g, '').length || sSv.replace (/\d/g, '').length) return;
var per = ((sDv) ? sDv : 0) * 24 * 60 * 60 + ((sHv) ? sHv : 0) * 60 * 60 +
          ((sMv) ? sMv : 0) * 60           + ((sSv) ? sSv : 0) * 1;
var cT = new Date ().getTime ();
FINAL = per + parseInt (cT / 1000, 10);
document.cookie = escape ('type=1+' + FINAL + '; expires=' + (cT + 180 * 24 * 60 * 60* 1000));
_CS.innerHTML = (sSv) ? sSv : 0; _CM.innerHTML = (sMv) ? sMv : 0; 
_CH.innerHTML = (sHv) ? sHv : 0; _CD.innerHTML = (sDv) ? sDv : 0; 
with (document)
   {
   getElementById ('set_timer').style.display = 'none';
   getElementById ('txt').innerHTML = 'До конца света осталось';
   getElementById ('timer').style.display = 'block';
   getElementById ('stop_timer').style.display = 'inline';
   }
TIMER = setTimeout ('FuncTimer ()', 1000);
}

function FuncTimer ()
{
var cT = parseInt (new Date ().valueOf () / 1000, 10);
var cDv = _CD.innerHTML, cHv = _CH.innerHTML, cMv = _CM.innerHTML, cSv = _CS.innerHTML;
if (cT <= FINAL)
   {
   cSv = (cSv != 0) ? --cSv : 59;
   if (cSv == 59) cMv = (cMv != 0) ? --cMv : 59;
   if (cSv == 59 && cMv == 59) cHv = (cHv != 0) ? --cHv : 23;
   if (cSv == 59 && cMv == 59 && cHv == 23 && cDv != 0) --cDv;
   }
else
   {
   document.getElementById ('txt').innerHTML = 'После конца света прошло';
   document.getElementById ('timer').style.color = 'red';
   cSv = (cSv != 59) ? ++cSv : 0;
   if (cSv == 0) cMv = (cMv != 59) ? ++cMv : 0;
   if (cSv == 0 && cMv == 0) cHv = (cHv != 23) ? ++cHv : 0;
   if (cSv == 0 && cMv == 0 && cHv == 0 && cDv) ++cDv;
   }
_CS.innerHTML = cSv; _CM.innerHTML = cMv;
_CH.innerHTML = cHv; _CD.innerHTML = cDv;
TIMER = setTimeout ('FuncTimer ()', 1000);
}

function FuncStopTimer ()
{
clearTimeout (TIMER); FINAL = 0;
SD_.value = ''; SH_.value = ''; SM_.value = ''; SS_.value = '';
with (document)
   {
   cookie = escape ('type=0+0; expires=1000');
   getElementById ('timer').style.display = 'none';
   getElementById ('timer').style.color = 'black';
   getElementById ('stop_timer').style.display = 'none';
   getElementById ('set_timer').style.display = 'block';
   }
}
</script>
</head>
<body>

<br>
<table border="1" width="65%">
<tr>
<td width="193">
<p align="center">Наименование</td>

<td align="center">Ваня</td>
<td align="center">Петя</td>
</tr>
<tr>

<td width="193">1)<span lang="ru"> сайт № 1 <a href="http://ya.ru/">ya.ru</a></span></td>
<td align="center">
<div id="set_timer">
Установите продолжительность отсчёта:

<br>д: <input id="sD" size="1">
ч: <input id="sH" size="1">
м: <input id="sM" size="1"> 
с: <input id="sS" size="1">
<p><input type="button" value="отсчёт" onclick="FuncSetTimer ()">
</div>
<div id="timer">
<span id="txt"></span>: <span id="cD"></span> дн., <span id="cH"></span> час., <span id="cM"></span> мин., <span id="cS"></span> сек.

</div>

<input id="stop_timer" type="button" value="Остановить отсчёт" onclick="FuncStopTimer ()">


</td>


<td align="center">
<div id="set_timer1">
Установите продолжительность отсчёта:
<br>д: <input id="sD" size="1">
ч: <input id="sH" size="1">
м: <input id="sM" size="1"> 

с: <input id="sS" size="1">
<p><input type="button" value="отсчёт" onclick="FuncSetTimer ()">
</div>
<div id="timer1">
<span id="txt1"></span>: <span id="cD1"></span> дн., <span id="cH1"></span> час., <span id="cM1"></span> мин., <span id="cS1"></span> сек.
</div>

<input id="stop_timer1" type="button" value="Остановить отсчёт" onclick="FuncStopTimer ()">

</td>
</tr>
<tr>
<td width="193"><span lang="ru">2) сайт №2 <a href="http://ya.ru/">ya.ru</a></span></td>
<td align="center"><input type="text" name="T2" size="14" value="03 д 20:30:05 "><span lang="ru">&nbsp; </span>
<input type="button" value="отсчет" name="B4"></td>
<td align="center"><input type="text" name="T4" size="14" value="00 д 01:50:05 "><span lang="ru">&nbsp; </span>
<input type="button" value="отсчет" name="B6"></td>
</tr>
</table>
</body>

</html>

Последний раз редактировалось denisich84, 13.02.2012 в 16:09.
Ответить с цитированием
  #3 (permalink)  
Старый 13.02.2012, 08:14
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
Ответить с цитированием
  #4 (permalink)  
Старый 13.02.2012, 13:39
Профессор
Отправить личное сообщение для розовый слоник Посмотреть профиль Найти все сообщения от розовый слоник
 
Регистрация: 17.10.2009
Сообщений: 258

Цена в районе 300WMR - могу только дать совет как это сделать
для затравки это делается через куки
Ответить с цитированием
  #5 (permalink)  
Старый 13.02.2012, 16:06
Интересующийся
Отправить личное сообщение для denisich84 Посмотреть профиль Найти все сообщения от denisich84
 
Регистрация: 10.02.2012
Сообщений: 18

Сообщение от розовый слоник Посмотреть сообщение
Цена в районе 300WMR - могу только дать совет как это сделать
для затравки это делается через куки
Вау ты крут, ты блеснул интеллектом А то я без тебя не знаю что это делается через куки
Ответить с цитированием
  #6 (permalink)  
Старый 13.02.2012, 16:11
Интересующийся
Отправить личное сообщение для denisich84 Посмотреть профиль Найти все сообщения от denisich84
 
Регистрация: 10.02.2012
Сообщений: 18

Сообщение от Gvozd Посмотреть сообщение
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
Выделил Так пойдет?Правильно?
Ответить с цитированием
  #7 (permalink)  
Старый 13.02.2012, 16:12
Интересующийся
Отправить личное сообщение для denisich84 Посмотреть профиль Найти все сообщения от denisich84
 
Регистрация: 10.02.2012
Сообщений: 18

Не надо мне давать интуитивно понятные советы я не даун и не много разбираюсь во всем этом. А дурацкие советы меня просто бесят
Таймер уже предложили написать, точно не знаю напишут или нет но пообещали
Ответить с цитированием
  #8 (permalink)  
Старый 13.02.2012, 16:37
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от denisich84
Выделил Так пойдет?Правильно?
Да.
Большое спасибо.
Сообщение от denisich84
Не надо мне давать интуитивно понятные советы я не даун и не много разбираюсь во всем этом. А дурацкие советы меня просто бесят
Извините, но тут сидят не телепаты, чтобы знать ваш уровень, и насколько вы разбираетесь.
Пожалуйста отнеситесь спокойней к советам.
Ответить с цитированием
  #9 (permalink)  
Старый 13.02.2012, 22:01
Интересующийся
Отправить личное сообщение для denisich84 Посмотреть профиль Найти все сообщения от denisich84
 
Регистрация: 10.02.2012
Сообщений: 18

Вопрос остается открытым! Пишите!
Ответить с цитированием
  #10 (permalink)  
Старый 14.02.2012, 00:28
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от denisich84
Вопрос остается открытым! Пишите!
Сумму в 300 WMR считаю недостаточной.
Готов взяться за 30 WMZ. Работаю по протекции.
Если моя сумма вас устраивает, напишите в ПМ с указанием контактов(ICQ, Skype) для живого общения
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Таймер обратного отсчета времени с кнопками denisich84 Общие вопросы Javascript 31 20.01.2015 17:48
Таймер обратного отсчета с часовым поясом destby Общие вопросы Javascript 0 03.08.2011 18:48
Помогите! "Не работает скрипт отсчета времени! Я нуб) Dobson Общие вопросы Javascript 4 28.05.2011 18:20
Графический таймер обратного отсчета bobri4 Элементы интерфейса 4 24.08.2009 22:50
таймер обратного отсчета Mignon Общие вопросы Javascript 1 07.06.2008 17:16