Здравствуйте, форумчане.
В общем, такая проблема - взял счётчик, создание которого описано в этой статье _http://tutorialzine.com/2011/12/countdown-jquery/.
Он по умолчанию отсчитывает до определенной даты. Мне бы нужно, чтоб он отсчитывал, к примеру, до 6 вечера каждого дня, а в полночь скидывался обратно. Кто может подсказать как отредактировать?
Насколько я понимаю, редактировать нужно файл script.js, но сам я с JS не знаком.
- 11.06.2013 20:08
- 11.06.2013 20:52
- Регистрация: 13.09.2011
- Сообщений: 64
- Репутация: 23
за 20$ помогу решить данный вопрос.
- 11.06.2013 21:53
- Регистрация: 17.08.2010
- Сообщений: 74
- Репутация: 12
проскролил быстренько код, там отсчитывает четко указанной даты.
Если как вы хотите, нужно вообще другую логику. Делать синхронизацию с локальным временем юзернейма. Будет время сегодня - подправлю. - 11.06.2013 22:24
html код, который в этом уроке вставляем себе на страницу куда надо, главный div каунтера там имеет id="countdown", это ключ по которому js найдет все остальные внутренние объекты.
на этой же странице должны быть подключены сам основной jquery, а также файлы jquery.countdown.js
script.js
в script.js в самом начале кода есть такая строка: ts = new Date(2012, 0, 1),
это по идее и есть место до которого каунтер должен отсчитывать время.
если надо сделать, что он автоматом отсчитывал каждый день до 6-ти вечера,
то надо заменить эту строку, по спецификации с этой страницы видим параметры функции new Date, они могут быть такими:
new Date(year, month, day, hours, minutes, seconds, milliseconds)
т.е. в вашем случае надо сделать примерно так:
var d = new Date();
var y = d.getFullYear();
var m = d.getMonth();
var dd = d.getDay();
это вы вставляете в Scripts.js после первой строки: $(function(){
далее строку ts = new Date(2012, 0, 1),
заменяете на ts = new Date(y, m, dd, 18, 0, 0),
но тут будет загвоздка в том, что надо еще и вначале проверять сколько сейчас времени и если до 18 часов, то код будет работать, а если больше тогда надо добавлять 1 к дню, чтобы оно начинало считать до завтрашнего дня.
в текст статьи сильно не вчитывался, попробуйте так и посмотрите будет ли вообще так работать, если да тогда можно будет дописать код, который проверяет больше ли 18 часов уже и добавляет день.Спасибо сказали:
- 11.06.2013 23:13
- Регистрация: 17.08.2010
- Сообщений: 74
- Репутация: 12
JaTony, getDay() возвращает день недели =) так что не катит.
getDate надо тогда. А так верно.Спасибо сказали:
Sky-R(12.06.2013), - 11.06.2013 23:19
Alexben, точно, первый баг фиксед :) спасибо :)
Sky-R, если что выкладывай что получилось где-то на сайт, там по ходу дела будем посмотреть, а то самому собирать по той статье некогда, а на месте можно будет и подумать, т.к. доп проверка на время полюбому нужна будет, чтобы корректно отображался каунтер после 18 часов, учитывая что сейчас времени уже больше чем 18:00 поставь для теста 23 час к примеру, чтобы увидеть вообще код работает или нет, потом уже можно будет на 18 поменять и доп проверку добавить.Спасибо сказали:
Sky-R(12.06.2013), - 12.06.2013 02:47
- Регистрация: 17.08.2010
- Сообщений: 74
- Репутация: 12
все ок
PHP код:$(function(){
var d = new Date();
var y = d.getFullYear();
var m = d.getMonth();
var dd = d.getDate();
var hr = d.getHours();
var note = $('#note'),
//one hr 3600000 ms
newYear = true;
ts = new Date(y,m,dd,18,00,00);
$('#countdown').countdown({
timestamp : ts,
callback : function(days, hours, minutes, seconds){
var message = "";
message += days + " day" + ( days==1 ? '':'s' ) + ", ";
message += hours + " hour" + ( hours==1 ? '':'s' ) + ", ";
message += minutes + " minute" + ( minutes==1 ? '':'s' ) + " and ";
message += seconds + " second" + ( seconds==1 ? '':'s' ) + " <br />";
if(newYear){
message += "left until the new year!";
}
else {
message += "left to 10 days from now!";
}
note.html(message);
}
});
});
[свернуть]
проверил, работает. very good. - 12.06.2013 10:37
Alexben,
получается, что теперь в этот код надо добавить что-то такое:
PHP код:здесь мы проверяем если часов уже больше 18, тогда надо к основной переменной даты добавить 1, чтобы начать отсчет до следующего дня, добавка идет к основной переменной, а не к dd, чтобы если у нас был последний день месяца, например 31, чтобы не получить 32 число, а так setDate должен сам если что переключить месяц. Чтобы не было повтора как в коде выше, получение года, месяца и дня опустил ниже проверки на время и добавки дня, тогда если что день поменяется, а потом уже получим нужные для каунтера данные.if (hr >= 18){
d.setDate(d.getDate() + 1);
var y = d.getFullYear();
var m = d.getMonth();
var dd = d.getDate();
var hr = d.getHours();
}
в итоге скрипт будет выглядеть как-то так:PHP код:вобщем как-то так, опять таки код не проверял, но по идее все должно быть так.$(function(){
var d = new Date();
var hr = d.getHours();
if (hr >= 18){
d.setDate(d.getDate() + 1);
}
var y = d.getFullYear();
var m = d.getMonth();
var dd = d.getDate();
var note = $('#note'),
//one hr 3600000 ms
newYear = true;
ts = new Date(y,m,dd,18,00,00);
$('#countdown').countdown({
timestamp : ts,
callback : function(days, hours, minutes, seconds){
var message = "";
message += days + " day" + ( days==1 ? '':'s' ) + ", ";
message += hours + " hour" + ( hours==1 ? '':'s' ) + ", ";
message += minutes + " minute" + ( minutes==1 ? '':'s' ) + " and ";
message += seconds + " second" + ( seconds==1 ? '':'s' ) + " <br />";
if(newYear){
message += "left until the new year!";
}
else {
message += "left to 10 days from now!";
}
note.html(message);
}
});
});
Спасибо сказали:
Sky-R(12.06.2013), - 12.06.2013 13:05
Всем спасибо за помощь, теперь счётчик отсчитывает как и нужно :)
Использовал финальный вариант от JaTony. - 12.06.2013 13:36
Sky-R, рад что работает, но обрати внимание на то что с ним будет происходить после 18:00, должен начать отсчет до 6 вечера следующего дня, а также еще одна проверка это в последний день месяца, либо на компе дату и время можно попереключать и обновлять сайт после этого, т.к. JS берет время с компа на сайте это не отразится, это для того чтобы не ждать долго.
кстати этот счетчик нужен для какого-то одного локального сайта, например городской портал или как?
бо тут не учитывается часовой пояс и например для людей с украины и россии будет считаться до 18:00 по их времени, а если надо сделать, чтобы считало до 18:00 по конкретному часовому поясу, например по россии, то надо еще делать изменения.
Тэги топика:
Похожие темы
Темы | Раздел | Ответов | Последний пост |
---|---|---|---|
JQuery. требуется помощь | Вопросы от новичков | 3 | 09.05.2013 02:39 |
нужна помощь в реализации алгоритма на jquery | Web программирование | 5 | 12.02.2013 13:29 |
Кнопочки постинга в соц. сети со счетчиком - встречаем Pluso! | Софт, скрипты, сервисы | 6 | 31.10.2012 18:49 |
проблемы со счётчиком LI | Прочее | 2 | 08.04.2011 15:44 |