Помощь со счётчиком на Jquery

(Ответов: 24, Просмотров: 3479)
Страница 1 из 3 123 Последняя
  1. Студент Аватар для Sky-R
    • Регистрация: 25.03.2013
    • Сообщений: 82
    • Репутация: 21
    • Webmoney BL: ?
    Здравствуйте, форумчане.
    В общем, такая проблема - взял счётчик, создание которого описано в этой статье _http://tutorialzine.com/2011/12/countdown-jquery/.
    Он по умолчанию отсчитывает до определенной даты. Мне бы нужно, чтоб он отсчитывал, к примеру, до 6 вечера каждого дня, а в полночь скидывался обратно. Кто может подсказать как отредактировать?
    Насколько я понимаю, редактировать нужно файл script.js, но сам я с JS не знаком.
    • 0
  2. Студент
    • Регистрация: 13.09.2011
    • Сообщений: 64
    • Репутация: 23
    за 20$ помогу решить данный вопрос.
    • 0
  3. Студент
    • Регистрация: 17.08.2010
    • Сообщений: 74
    • Репутация: 12
    проскролил быстренько код, там отсчитывает четко указанной даты.
    Если как вы хотите, нужно вообще другую логику. Делать синхронизацию с локальным временем юзернейма. Будет время сегодня - подправлю.
    • 0
  4. Дипломник Аватар для JaTony
    • Регистрация: 02.12.2010
    • Сообщений: 163
    • Репутация: 29
    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 часов уже и добавляет день.
    • 3

    Спасибо сказали:

    Alexben(12.06.2013), Removal Of Brain(12.06.2013), Sky-R(12.06.2013),
  5. Студент
    • Регистрация: 17.08.2010
    • Сообщений: 74
    • Репутация: 12
    JaTony, getDay() возвращает день недели =) так что не катит.
    getDate надо тогда. А так верно.
    • 1

    Спасибо сказали:

    Sky-R(12.06.2013),
  6. Дипломник Аватар для JaTony
    • Регистрация: 02.12.2010
    • Сообщений: 163
    • Репутация: 29
    Alexben, точно, первый баг фиксед :) спасибо :)

    Sky-R, если что выкладывай что получилось где-то на сайт, там по ходу дела будем посмотреть, а то самому собирать по той статье некогда, а на месте можно будет и подумать, т.к. доп проверка на время полюбому нужна будет, чтобы корректно отображался каунтер после 18 часов, учитывая что сейчас времени уже больше чем 18:00 поставь для теста 23 час к примеру, чтобы увидеть вообще код работает или нет, потом уже можно будет на 18 поменять и доп проверку добавить.
    • 1

    Спасибо сказали:

    Sky-R(12.06.2013),
  7. Студент
    • Регистрация: 17.08.2010
    • Сообщений: 74
    • Репутация: 12

    все ок

    PHP код:
    $(function(){
    var 
    = new Date();
    var 
    d.getFullYear();
    var 
    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(dayshoursminutesseconds){
                
                var 
    message "";
                
                
    message += days " day" + ( days=='':'s' ) + ", ";
                
    message += hours " hour" + ( hours=='':'s' ) + ", ";
                
    message += minutes " minute" + ( minutes=='':'s' ) + " and ";
                
    message += seconds " second" + ( seconds=='':'s' ) + " <br />";
                
                if(
    newYear){
                    
    message += "left until the new year!";
                }
                else {
                    
    message += "left to 10 days from now!";
                }
                
                
    note.html(message);
            }
        });
        
    }); 
    [свернуть]

    проверил, работает. very good.
    • 2

    Спасибо сказали:

    JaTony(12.06.2013), Sky-R(12.06.2013),
  8. Дипломник Аватар для JaTony
    • Регистрация: 02.12.2010
    • Сообщений: 163
    • Репутация: 29
    Alexben,
    получается, что теперь в этот код надо добавить что-то такое:


    PHP код:
    if (hr >= 18){
        
    d.setDate(d.getDate() + 1);
        var 
    d.getFullYear(); 
        var 
    d.getMonth(); 
        var 
    dd d.getDate();     
        var 
    hr d.getHours(); 

    здесь мы проверяем если часов уже больше 18, тогда надо к основной переменной даты добавить 1, чтобы начать отсчет до следующего дня, добавка идет к основной переменной, а не к dd, чтобы если у нас был последний день месяца, например 31, чтобы не получить 32 число, а так setDate должен сам если что переключить месяц. Чтобы не было повтора как в коде выше, получение года, месяца и дня опустил ниже проверки на время и добавки дня, тогда если что день поменяется, а потом уже получим нужные для каунтера данные.


    в итоге скрипт будет выглядеть как-то так:
    PHP код:
    $(function(){ 
    var 
    = new Date(); 
    var 
    hr d.getHours(); 


    if (
    hr >= 18){
        
    d.setDate(d.getDate() + 1);
    }
    var 
    d.getFullYear(); 
    var 
    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(dayshoursminutesseconds){ 
                 
                var 
    message ""
                 
                
    message += days " day" + ( days=='':'s' ) + ", "
                
    message += hours " hour" + ( hours=='':'s' ) + ", "
                
    message += minutes " minute" + ( minutes=='':'s' ) + " and "
                
    message += seconds " second" + ( seconds=='':'s' ) + " <br />"
                 
                if(
    newYear){ 
                    
    message += "left until the new year!"
                } 
                else { 
                    
    message += "left to 10 days from now!"
                } 
                 
                
    note.html(message); 
            } 
        }); 
         
    }); 
    вобщем как-то так, опять таки код не проверял, но по идее все должно быть так.
    • 1

    Спасибо сказали:

    Sky-R(12.06.2013),
  9. Студент Аватар для Sky-R
    • Регистрация: 25.03.2013
    • Сообщений: 82
    • Репутация: 21
    • Webmoney BL: ?
    Всем спасибо за помощь, теперь счётчик отсчитывает как и нужно :)

    Использовал финальный вариант от JaTony.
    • 0
  10. Дипломник Аватар для JaTony
    • Регистрация: 02.12.2010
    • Сообщений: 163
    • Репутация: 29
    Sky-R, рад что работает, но обрати внимание на то что с ним будет происходить после 18:00, должен начать отсчет до 6 вечера следующего дня, а также еще одна проверка это в последний день месяца, либо на компе дату и время можно попереключать и обновлять сайт после этого, т.к. JS берет время с компа на сайте это не отразится, это для того чтобы не ждать долго.

    кстати этот счетчик нужен для какого-то одного локального сайта, например городской портал или как?
    бо тут не учитывается часовой пояс и например для людей с украины и россии будет считаться до 18:00 по их времени, а если надо сделать, чтобы считало до 18:00 по конкретному часовому поясу, например по россии, то надо еще делать изменения.
    • 0
Страница 1 из 3 123 Последняя

Похожие темы

Темы Раздел Ответов Последний пост
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

У кого попросить инвайт?

Вы можете попросить инвайт у любого модератора:

Информеры