Не работает setInterval
Здравствуйте. Есть код отсчёта до определённой даты. Время должно быть серверное. Сам код вставляю в одну из новостей на Джумле.
<span id="doc_time"></span> <script src="http://code.jquery.com/jquery-1.11.1.min.js"></script> <script language="javascript" type="text/javascript"> <?php date_default_timezone_set("Etc/GMT+12"); ?> function clock() { var d = new Date("<?php echo (date("r")); ?>"); var d1 = new Date("<?php echo date("M-d-Y", mktime(0, 0, 0, 1, 1, 2018)); ?>"); n=Math.floor((d1-d)/1000); sec=n%60; n=Math.floor(n/60); if(sec<10)sec='0'+sec; min=n%60; n=Math.floor(n/60); if(min<10)min='0'+min; hour=n%24; n=Math.floor(n/24); date_time=n+":"+hour+":"+min+":"+sec; document.getElementById("doc_time").innerHTML = date_time; }; clock(); $(document).ready(function() { setInterval(clock, 1000); }); </script> Ну и собственно время отображается, но единожды, setInterval почему-то не обновляет... Причём если убрать вызов функции "clock();", то при обновлении поле будет пустое и только через секунду отобразится время. Я читал что в setInterval функцию нужно указывать без скобок, но со скобками, без скобок, в кавычках - никак не работает. Надеюсь на вашу помощь. |
Atlas,
<!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> </head> <body> <span id="doc_time"></span> <script src="https://code.jquery.com/jquery-1.11.1.min.js"></script> <script> function clock() { var d = new Date(); var d1 = new Date(2018, 0, 1, 0, 0, 0, 0); n=Math.floor((d1-d)/1000); sec=n%60; n=Math.floor(n/60); if(sec<10)sec='0'+sec; min=n%60; n=Math.floor(n/60); if(min<10)min='0'+min; hour=n%24; n=Math.floor(n/24); date_time=n+":"+hour+":"+min+":"+sec; document.getElementById("doc_time").innerHTML = date_time; window.setTimeout(clock,1000) }; $(function() { clock() }); </script> </body> </html> |
Так работает, но... мне нужно именно серверное время.
Кстати, заметил ещё, что этот скрипт с отсчётом убивает другой скрипт, который держит открывающуюся панельку слева страницы, в результате чего, её содержимое падает под футер. Если надо, могу показать что там за скрипт. |
Atlas,
смотрите ошибки в консоли, может вы jquery два раза грузите. Цитата:
|
Atlas,
пост №1 строка 8 заменить на n=Math.floor((d1-d - performance.now())/1000); |
Цитата:
Осталось только с панелькой разобраться... Тот скрипт начинается на: (причём первым символом идёт красная точка, называющаяся \ufeff) $(function(){ $('.panel').tabSlideOut({ tabHandle: '.handle', pathToTabImage: 'imgbutton.jpg', imageHeight: '160px', imageWidth: '60px', tabLocation: 'left', speed: 300, action: 'click', topPos: '200px', fixedPosition: true }); }); (function($){ И далее... Может сможете подсказать в чём может быть конфликт? P.S.: похоже не работают все остальные скрипты на этой странице, когда я включаю отсчёт. |
Всё, удалил подключение jquery и всё заработало.
|
Часовой пояс GMT +3, время: 00:43. |