Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   обратный отчет без обновления страницы (https://javascript.ru/forum/dom-window/66278-obratnyjj-otchet-bez-obnovleniya-stranicy.html)

dantist433 05.12.2016 17:58

обратный отчет без обновления страницы
 
Добрый день уважаемые форумчане.
в javascript новичек, поэтому прошу вашей помощи.
на странице имеется два счетчика
<script type="text/javascript">
function timer(){
 var obj=document.getElementById('timer_inp');
 obj.innerHTML--;
 
 if(obj.innerHTML==0){setTimeout(function(){},1000);}
 else{setTimeout(timer,1000);}
}
setTimeout(timer,1000);
</script>

<div id="timer_inp">10</div>

это скрипт первого счетчика, т.е. после завершения он ничего не делает.
как вывести сообщение - я в курсе.
Необходимо после завершения отчета времени запустить 2 отчет времени (кое что записать в БД) и сделать так что бы 1 отчет исчез, без обновления страницы.
И тут же 2 вопрос: для 2 обратного отчета подойдет ли этот же скрипт, только с такой записью
var obj=document.getElementById('timer_inp2');

Dilettante_Pro 05.12.2016 18:54

dantist433,
Цитата:

Сообщение от dantist433
Необходимо после завершения отчета времени запустить 2 отчет времени (кое что записать в БД) и сделать так что бы 1 отчет исчез, без обновления страницы.

А чем второй отсчет будет отличаться от первого? Зачем первому исчезать? Может, тот же снова установить и запустить заново?

И еще: Как вы собираетесь запускать запись в БД и второй отсчет?

dantist433 05.12.2016 19:05

Цитата:

Сообщение от Dilettante_Pro (Сообщение 437154)
А чем второй отсчет будет отличаться от первого? Зачем первому исчезать? Может, тот же снова установить и запустить заново?

ну можно и так, только как это реализовать?
смотри на сайте будет надписи:
1 - отчет -осталось 10 сек
2 - отчет -осталось 20 сек
3 - отчет-осталось 30 сек

при загрузке страницы начинает работать 1 отчет, остальные два остаются без изменения, но на странице показывается, после окончания отчета запускается 2 отчет времени, 3 показывается, 1 исчезает со страницы, ну и так далее.
просто не знаю как это сформулировать

Цитата:

Сообщение от Dilettante_Pro (Сообщение 437154)
И еще: Как вы собираетесь запускать запись в БД и второй отсчет?

я не знаю можно ли это сделать в javascripts, а так в php есть запись и хотелось бы после окончания отчета запустить ее

dantist433 06.12.2016 08:08

Ну да, отсчет, с- через раз нажимается, сорян

Dilettante_Pro 06.12.2016 17:17

<div id="timer_inp">10</div>
<div id="timer_inp1">5</div>
<div id="timer_inp2">10</div>
<script type="text/javascript">
function timer(elem_id){
 if(elem_id) { obj=document.getElementById(elem_id); }
 obj.innerHTML--;
 
 if(obj.innerHTML==0){setTimeout(function(){
      obj.style.display = 'none';
      if(i < arr.length - 1) { 
         i++;
         timer(arr[i].id);
      }
 },1000);}
 else{setTimeout(timer,1000);}
}
var arr = document.querySelectorAll('div'),
        i = 0;
timer(arr[i].id);
</script>

dantist433 06.12.2016 23:22

спасибо.
Теперь вопрос вот в чем
можно ли в div-ах вывести в виде часы:минуты:секунды - не надо ли для этого переписывать код
и 2 вопрос с записью в БД, после ого как закончился 1 отсчет необходимо записать в БД что нить.

Ну и лично от меня просьба, можно ли это сделать с комментариями - просто не хочется тупо копировать, хочется хоть немного представление иметь что делает каждая строчка, дабы не плодить тут миллионы тем, а попытаться самому разобраться

Dilettante_Pro 07.12.2016 11:21

dantist433,
Цитата:

Сообщение от dantist433
можно ли в div-ах вывести в виде часы:минуты:секунды - не надо ли для этого переписывать код

Можно. Нужно переписывать. Зачем? Сейчас дается отсчет с 10, 5 - сколько нужно секунд.
Вы будете писать 00:00:10 ? а если 100 секунд - что удобнее: 100 или 00:01:40 ?
Цитата:

Сообщение от dantist433
2 вопрос с записью в БД, после ого как закончился 1 отсчет необходимо записать в БД что нить

В функции, там, где запускается следующий отсчет, можно разместить запуск функции записи в БД, что-то вроде
if(obj.innerHTML==0){setTimeout(function(){
      obj.style.display = 'none';
      if(i == 0) writeDB();
      if(i < arr.length - 1) { 
         i++;
         timer(arr[i].id);
      }
 },1000);}

А насчет комментариев - что именно непонятно?
И побольше читайте учебники с примерами

dantist433 07.12.2016 13:39

Цитата:

Сообщение от Dilettante_Pro (Сообщение 437291)

Можно. Нужно переписывать. Зачем? Сейчас дается отсчет с 10, 5 - сколько нужно секунд.
Вы будете писать 00:00:10 ? а если 100 секунд - что удобнее: 100 или 00:01:40 ?

Там просто время будет где то по 12-16 часов, и не особо наглядно буде в секундах
Цитата:

Сообщение от Dilettante_Pro (Сообщение 437291)
А насчет комментариев - что именно непонятно?

в данный момент все кроме функции и if.
только начинаю изучать

dantist433 07.12.2016 13:40

И еще вопрос к БД надо заранее подключиться? в JS или достаточно подключения в php

dantist433 08.12.2016 00:20

входные данные будут в секундах например 57632 секунды- их надо разбить на часы:минуты:секунды


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