serii81
@serii81
Я люблю phр...

Почему не работает moment.js?

Я хочу сделать себе часы на сайте, чтобы они показывали точное время только по лондону и другим городам.
Установил moment.js с помощью npm и переместил папку с moment.js в директорию с библиотеками.
Подключил перед body moment.js и английскую локаль.
<script src="assets/libs/slick/slick.min.js"></script>
<script src="assets/libs/moment/locale/en-gb.js"></script>


Далее в файле main.js прописал
$(function () {
  /*
      https://www.jqueryscript.net/animation/Smooth-Mouse-Wheel-Scrolling-Plugin-With-jQuery-easeScroll.html
      ===========================*/
  $("html").easeScroll({
    frameRate: 60,
    animationTime: 1000,
    stepSize: 90,
    pulseAlgorithm: 1,
    pulseScale: 8,
    pulseNormalize: 1,
    accelerationDelta: 20,
    accelerationMax: 1,
    keyboardSupport: true,
    arrowScroll: 50,
    touchpadSupport: true,
    fixedBackground: true
  });

  /*toggle header-menu
  =======================================*/
  $('#js-menu-btn').on('click', function(){
    $('#js-header-menu').slideToggle();
  });

  /*show tarrif list
  =======================================*/
  var jsItem = $('#js-tarrif .tarrif__item');

  jsItem.on('mouseenter', function(){
    $(this).find('.tarrif__item-list').slideDown(600);
  });

  jsItem.on('mouseleave', function(){
    $(this).find('.tarrif__item-list').slideUp(300);
  });

  /*clients__slider
  =======================================*/
  $('#js-clients__list').slick({
    slidesToShow: 4,
    slidesToScroll: 3,
    responsive: [
    {
      breakpoint: 1200,
      settings: {
        slidesToShow: 3,
        slidesToScroll: 3,
        infinite: true
      }
    },
    {
      breakpoint: 992,
      settings: {
        slidesToShow: 2,
        slidesToScroll: 2
      }
    },
    {
      breakpoint: 768,
      settings: {
        slidesToShow: 1,
        slidesToScroll: 1
      }
    }
    // You can unslick at a given breakpoint now by adding:
    // settings: "unslick"
    // instead of a settings object
  ]
  });

});

window.onload = function(){
  var moment = moment();
  var format = 'H:m:s';

  window.setInterval(function(){
    var clock = document.getElementById("js-clock-content");
      clock.innerHTML = moment().format(format);
    }, 1000);
};


Но получаю ошибку
Uncaught TypeError: Cannot read property 'defineLocale' of undefined
    at en-gb.js:11
    at en-gb.js:7
    at en-gb.js:8


Что я делаю не так?
  • Вопрос задан
  • 1060 просмотров
Решения вопроса 1
serii81
@serii81 Автор вопроса
Я люблю phр...
Все наконец-то заработало.
Нужно подключить moment-timezone-with-data.min.js перед moment.js

И в коде прописать следующее

var now = moment();
  var clock = document.getElementById("js-clock-content");

  moment.locale('en-gb');

  window.setInterval(function(){
    clock.innerHTML = moment().tz("Europe/London").format('HH:mm:ss');
  }, 1000);


Всем спасибо))
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Подключил перед body moment.js и английскую локаль.

Вы подключили Slick и английскую локаль, но не moment:
<script src="assets/libs/slick/slick.min.js"></script>
<script src="assets/libs/moment/locale/en-gb.js"></script>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы