Форум программистов, компьютерный форум, киберфорум
Наши страницы
JavaScript
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Ral
0 / 0 / 0
Регистрация: 05.12.2014
Сообщений: 22
1

Таймер обратного отсчета на AJAX

19.03.2015, 10:40. Просмотров 1702. Ответов 7
Метки нет (Все метки)

Всем доброго времени суток.
Хочу сделать таймер обратного отсчета. Так как таймер должен быть абсолютным, то есть начинаться не с момента входа пользователя на сайт, а с момента запуска его админом, то конечный момент времени обозначен в mysql. PHP-код выглядит так:
PHP
1
2
3
4
5
6
7
<?php
include "bd.php";
$timeend=mysql_query("select endtime from timer", $db);
$timeend1=  mysql_fetch_row($timeend);
$c=$timeend1[0]-time();
echo date("H:i:s", $c);
?>
Подскажите, пожалуйста, как таймер вывести на главную страницу сайта AJAX'ом, без jquery в div с id="timer"?
И как к таймеру примотать функцию, которая будет исполняться по истечению времени?
ПС: заранее спасибо.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.03.2015, 10:40
Ответы с готовыми решениями:

Таймер обратного отсчета
Доброе время суток. Нашел на сайт Таймер обратного отсчета времени. Меня он не...

Таймер обратного отсчета
Здравствуйте. Пожалуйста можете скинуть скрипт, или ссылку на сайт, где есть...

Таймер обратного отсчета
Привет всем. Мне нужно сделать таймер обратного отсчета именно на классах в JS....

Таймер обратного отсчета
Есть у кого-нибудь готовый или кто-то может написать, если не муторно счетчик...

таймер обратного отсчета
привет всем....помогите с таймером обратного отсчета до определенной даты,...

7
Shakalaka
Эксперт HTML/CSS
644 / 548 / 322
Регистрация: 27.01.2015
Сообщений: 1,374
19.03.2015, 10:56 2
Я так понял, ты хочешь таймер запускать на сервере? А не проще при загрузке страницы просто передать с сервера твой $timeend1 а сам таймер запустить через setInterval уже js-ом на странице пользователя? А то так ты каждую секунду хочешь слать запрос на сервер..
0
Ral
0 / 0 / 0
Регистрация: 05.12.2014
Сообщений: 22
19.03.2015, 11:06  [ТС] 3
А его не проще будет так поломать негодяям? В принципе, тоже можно, только как его "оживить" js?
0
Shakalaka
Эксперт HTML/CSS
644 / 548 / 322
Регистрация: 27.01.2015
Сообщений: 1,374
19.03.2015, 11:46 4
Ну смотри, ты можешь прям в php скрипте через echo вывести свой див для времени, а за ним скрипт.
Логика примерно такая:
- получаешь из БД $timeend1;
- в джаваскрипте создаешь 2 даты: текущая и дата окончания (var now = new Date(); var end = Date($timeend1))
- var offset = end - now даст определенное число миллисекунд, а потом просто раскладываешь полученное значение var hours = parseInt(offset/(1000*60*60*24)) var minutes = parseInt(offset/(1000*60*60))%24 ну и т.д.
- запускаешь setInterval каждые 1000 миллисекунд и выполняешь предыдущие действия.
Как-то так
0
Ral
0 / 0 / 0
Регистрация: 05.12.2014
Сообщений: 22
19.03.2015, 12:31  [ТС] 5
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
<script type="text/javascript">
                        window.onload= window.setInterval(function()
                        {
                            var now = new Date();
                            var end = Date('<?php echo $timeend1;?>');
                            var offset = end - now;
                            var hours = parseInt(offset/(1000*60*60*24));
                            var minutes = parseInt(offset/(1000*60*60));
                            var second= parseInt(offset/(1000*60));
                            var myDivTime=document.getElementById("time");
                            myDivTime.write(hours);
                        }, 1000);
                        </script>
ничего не происходит
0
kalabuni
Нарушитель
3243 / 2567 / 615
Регистрация: 18.04.2012
Сообщений: 7,710
19.03.2015, 13:52 6
1) для js-объекта Date () важен формат того, что будет внутри его круглых скобок -- а вы об этом совершенно не задумались; PHP-функция должна вернуть время в определённом формате

2) метод write применяется только к одному-единственному объекту document.write ()
никаких ваших "майдивтайм" не может быть в принципе

3) метод write () нельзя применять к уже сформированной странице (если только вы не хотите уничтожить всё её содержимое)
0
Shakalaka
Эксперт HTML/CSS
644 / 548 / 322
Регистрация: 27.01.2015
Сообщений: 1,374
19.03.2015, 13:55 7
Лучший ответ Сообщение было отмечено Ral как решение

Решение

Ну во-первых, php time() возвращает секунды, а js Date() работает с миллисекундами, так что твой $timeend1, если он строка, надо привести к timestamp, умножить на 1000 и передать в Date() без кавычек. Короче, вот:
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 window.onload = function(){ setInterval(function(){
                            var now = new Date();
                            var end = new Date(1428961934*1000); // главное тут передай правильное значение
                            var offset = end - now;
                            var hours = parseInt(offset/(1000*60*60))%24;
                            console.log(hours);
                            var minutes = parseInt(offset/(1000*60))%60;
                            var second= parseInt(offset/(1000))%60;
                            var myDivTime=document.getElementById("time");
                            myDivTime.innerHTML = hours 
                            myDivTime.innerHTML += "-" 
                            myDivTime.innerHTML += minutes
                            myDivTime.innerHTML += "-" 
                            myDivTime.innerHTML += second;
                            }, 1000);
                        }
1
Ral
0 / 0 / 0
Регистрация: 05.12.2014
Сообщений: 22
20.03.2015, 13:53  [ТС] 8
Шакалака, спасибо тебе огромное, второй раз помогаешь!
0
20.03.2015, 13:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.03.2015, 13:53

Таймер обратного отсчета на JS
Добрый день! Хочу сделать таймер обратного отсчета. Время выбирается из...

Таймер обратного отсчета
Здравствуйте друзья! Подскажите пожалуйста, в чем проблема. Есть небольшой...

Таймер обратного отсчета
У меня есть таймер обратного отсчета.Как сделать что б он начинался с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru