Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Обратный секундный таймер (https://javascript.ru/forum/css-html/45399-obratnyjj-sekundnyjj-tajjmer.html)

VTrial 27.02.2014 00:10

Обратный секундный таймер
 
Вечер добрый, уважаемые!
Есть обратный таймер, который считает мин. и сек.
Код:

<span id="timer" long="00:29">00:30</span>
<script>
var t = setInterval (function ()
  {
  function f (x) {return (x / 100).toFixed (2).substr (2)}
  var o = document.getElementById ('timer'), w = 60, y = o.innerHTML.split (':'),
  v = y [0] * w + (y [1] - 1), s = v % w, m = (v - s) / w; if (s < 0)
  var v = o.getAttribute ('long').split (':'), m = v [0], s = v [1];
  o.innerHTML = [f (m), f (s)].join (':');
  }, 1000);
</script>

Для задания, мне необходимо, чтобы таймер считал только секунды, предварительно брав значения переменной.
Т.к. я в JS не разбираюсь, прошу вашей помощи разобраться в коде.

Мои догадки:
Допустим наша переменная $time = 59;
Вывод должен выглядеть по идеи так:
Код:

<span id="timer" long="00:<? echo $time?>">00:<? echo $time?></span>
А теперь по полочкам:
Это, я так понял, задает переменной t выполнение определенного действия раз в 1000 мсек (1 сек).
Код:

var t = setInterval (function ()
  {
..........
}, 1000);

Без малейшего понятия, что это и для чего:
Код:

function f (x) {return (x / 100).toFixed (2).substr (2)}
Далее берем значение с html разметки по ид "timer", присваиваем значение переменной w и разбиваем полученную строку из разметки на 2 части, где разделитель ":" ?!
Код:

var o = document.getElementById ('timer'), w = 60, y = o.innerHTML.split (':'),
Затем проводим математические действия, где y[0] - это значение до ":" и y[1] - после ":";
s - это секунды, однако действие v%w мне не понятно;
m - минуты, тут все понятно (наверное).
Код:

var o = document.getElementById ('timer'), w = 60, y = o.innerHTML.split (':'),
После берем значение с атрибута "long", разделяя на 2, до : и после, присваивая значения переменным.
Код:

var v = o.getAttribute ('long').split (':'), m = v [0], s = v [1];
Ну и сам вывод:
Выводим значения переменных для минут и секунд, разделяя :
Код:

o.innerHTML = [f (m), f (s)].join (':');
Если я что-то не так понял, прошу меня поправить.
За ранее спасибо.

рони 27.02.2014 01:20

Цитата:

Сообщение от VTrial
Без малейшего понятия, что это и для чего:
function f (x) {return (x / 100).toFixed (2).substr (2)}

добавка нолика
function f (x) {return (x / 100).toFixed (2).substr (2)}
      alert(f(9))

VTrial 27.02.2014 01:34

Цитата:

Сообщение от рони (Сообщение 299729)
добавка нулика
function f (x) {return (x / 100).toFixed (2).substr (2)}
      alert(f(9))

Какого еще нулика?

рони 27.02.2014 01:45

VTrial,
9 станет 09 -- а 10 так и останется 10

VTrial 27.02.2014 02:03

Хорошо. Теперь стоит вопрос, как убрать минуты и считать только секунды.

рони 27.02.2014 02:05

Цитата:

Сообщение от VTrial
Хорошо. Теперь стоит вопрос, как убрать минуты и считать только секунды.

o.innerHTML = [f (m), f (s)].join (':');

o.innerHTML = f (s)
или
o.innerHTML = s

VTrial 27.02.2014 02:07

Не работает так, уже пробовал.
Скидывает на N (NaN)

рони 27.02.2014 02:17

VTrial,
<span id="timer" long="59">60</span>
<script>
var t = setInterval (function ()
   {
   function f (x) {return (x / 100).toFixed (2).substr (2)}
   var o = document.getElementById ('timer'), s = o.innerHTML;
   s--;
   if (s < 0) s = o.getAttribute ('long');
   o.innerHTML = f(s);
   }, 1000);
</script>

VTrial 27.02.2014 03:00

Ага, теперь понятно. Все работает, спасибо!


Часовой пояс GMT +3, время: 10:44.