Не работает 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, время: 09:44. |