Задать вопрос
  • Почему неправильно работает код js в мобильной версии?

    @SvoekoshinFA
    Я на скриншоте увидел что вы пробуете через iPhone и решил проверить на своём устройстве.
    А потом, я просто вывел на печать даты по которым должно сортироваться, и увидел что они все одинаковые.
  • Почему неправильно работает код js в мобильной версии?

    @SvoekoshinFA
    У меня получилось воссоздать проблему.
    Проблема возникает только на iOS потому что iOS по другому обрабатывает даты.

    при попытке Date.parse() он возвращает "Invalid Date"

    Вот этот код должен работать правильно.

    // массив цитат
    const quoteCollection = [
      {id: 0, date: '1919-06-01 00:54:23', source: '1 июня 1919', 
      text: 'Цитата 1'},
      {id: 1, date: '1916-08-04 00:54:48', source: '4 августа 1916', 
      text: 'Цитата 2'},
      {id: 2, date: '1916-09-09 03:54:48', source: 'Явление Луны, 9 сентября 1914', 
      text: 'Цитата 3'},
      {id: 3, date: '1946-11-07 00:55:51', source: 'Памяти Александра Блока, 7 ноября 1946', 
      text: 'Цитата 4'},
      {id: 4, date: '1916-12-12 00:56:20', source: '12 декабря 1916', 
      text: 'Цитата 5'},
      {id: 5, date: '1946-05-13 00:56:44', source: '«Наяву», 13 мая 1946', 
      text: 'Цитата 6'},
      {id: 6, date: '1916-02-18 00:57:50', source: '18 февраля 1916', 
      text: 'Цитата 7'},
    ];
    
    const updateQuote = () => {
      const quote = document.querySelector('.quote');
      const now = new Date();
    
      const soon = quoteCollection
        .map(item => {
          // создаем копию элемента
          const newItem = { ...item };
          // меняем у даты год на текущий и записываем в копию
          newItem.date = new Date(item.date.split(' ')[0]).setFullYear(now.getFullYear());
          return newItem;
        })
        // сортируем так чтобы в начале был самый близкий по времени елемент
        .sort((a, b) => Math.abs(a.date - now) - Math.abs(b.date - now))
        // возвращаем первый елемент массива
        .shift();
    
      quote.innerHTML = `${soon.text}<br><br><b>${soon.source}</b>`;
    
    };
    
    updateQuote();
    setInterval(updateQuote, 6000000);