Moment.js создает всплывающее окно в определенное время

Это первый раз, когда я использую moment.js, но я пытаюсь создать период времени для появления всплывающего окна или кнопки. Поскольку это мой первый раз, когда я использую это, через документы очень непонятно, как это сделать: http://momentjs.com/docs как я имею в виду, через раздел продолжительности или манипулирование

$('.button').hide();
if(moment.duration(9, 'hours')){
$('.button').show();
}
else{
$('.button').hide();
}

что-то вроде этого, но я не уверен, и я пытаюсь получить его, чтобы время началось в 9 утра

4 ответа

Решение

Я закончил тем, что использовал функции get set с сайта, так что это будет выглядеть так:

$('.button').hide();
if(moment().hours() >= 9 && moment().hours() <= 11){
   $('.button').show();
}
else{
   $('.button').hide();
}

который работал отлично для моментов

Не нужно использовать продолжительность. moment.js не дает вам тайм-ауты (Durations - это просто длительность по времени, например, 2 часа и т. д.), поэтому просто используйте vanilla:

function showSomething(){
   $('#something').show();
}

setTimeout(showSomething, 1000);

Вы также можете написать:

setTimeout(showSomething, moment.duration(2, 'seconds'));

Но я не вижу варианта использования в вашем вопросе.

Мне удалось совместить два подхода выше. Мне нужно было активировать кнопку в определенные промежутки времени: кредит Chridam и jsg. Её моё решение:

    $('#myButton').hide();
        if(moment().hours() >= 13&& moment().hours() <= 17)
          {
            $('#myButton').show();
           }
      else if (moment().hours() >= 1 && moment().hours() <= 2)
{
   $('#myButton').show();
}
else{
   $('#myButton').hide();
}


    // Ability to refresh
    function refreshAt(hours, minutes, seconds) {
   var now = new Date();
   var then = new Date();

   if(now.getHours() > hours || (now.getHours() == hours && now.getMinutes() > minutes) || now.getHours() == hours && now.getMinutes() == minutes && now.getSeconds() >=  seconds) {
           then.setDate(now.getDate() + 1);
   }
   then.setHours(hours);
   then.setMinutes(minutes);
   then.setSeconds(seconds);

   //var timeout = (then.getTime() - now.getTime());
   //setTimeout(showButton, timeout);
};
    refreshAt(13, 00, 00);
    refreshAt(17, 0, 00);
    refreshAt(1, 00, 00);
    refreshAt(2, 00, 00);

Чтобы показать кнопку в определенное время, скажем, 11:12, вы можете попробовать это:

$('.button').hide();

function showButton(){
   $('.button').show();
};

function refreshAt(hours, minutes, seconds) {
   var now = new Date();
   var then = new Date();

   if(now.getHours() > hours || (now.getHours() == hours && now.getMinutes() > minutes) || now.getHours() == hours && now.getMinutes() == minutes && now.getSeconds() >=  seconds) {
           then.setDate(now.getDate() + 1);
   }
   then.setHours(hours);
   then.setMinutes(minutes);
   then.setSeconds(seconds);

   var timeout = (then.getTime() - now.getTime());
   setTimeout(showButton, timeout);
};

refreshAt(11, 12, 00);

JSFiddle

Другие вопросы по тегам