• Почему на windows возникает ошибка, а на linux работает?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    В документации moment.js говорится, что для парсинга строки (когда мы делаем moment(String)) эта самая строка должна соответствовать одному из форматов ISO 8601. В случае если строка стандарту не соответствует - работа во всех браузерах не гарантируется. Там есть специальное предупреждение по этому поводу и примеры строк, которые будут соответствовать. Вероятнее всего вы столкнулись именно с этим - ваши даты не парсятся в определенных браузерах.
    Ответ написан
    Комментировать
  • Почему не отображается локальное хранилище?

    в левой колонке же стрелочка. Раскройте пункт , там подуровень
    Ответ написан
    1 комментарий
  • Есть ли смысл делать анимацию без JS?

    SagePtr
    @SagePtr
    Еда - это святое
    Да, браузеры смогут оптимизировать анимацию средствами CSS и решать, с какой частотой её воспроизводить, в целях экономии ресурсов и батареи.

    При декларативном подходе (CSS) мы говорим браузеру, что именно сделать, а он уже сам решит, как именно сделать это оптимально для себя и для устройства, на котором он работает. При императивном подходе (JS) мы контролируем каждый шаг и не даём свободы, браузер вынужден делать то, что автор скрипта скажет, даже если ту же самую задачу он может решить лучше и оптимальнее него.
    Ответ написан
    Комментировать
  • Есть ли смысл делать анимацию без JS?

    neuotq
    @neuotq
    Прокрастинация
    Анимация = анимации рознь.

    Конкретный ответ со списком вы тут не увидите, это будет большая статья, со множественными "а вот тут", "но здесь" просто потому что многое зависит от контекста, задач, планирование.
    Главные рекомендации это не делать на js то, что отлично реализуется с помощью css. Этим к сожалению часто болеют многие фронтендеры, особенно из тех кто принципиально не любит вёрстку. Банальные примеры некоторые виды трансформаций объектов при булевых сменах какого параметра(условно навел/убрал наведения, вкл-выкл и тп).

    Но нужно иметь ввиду, что там где у вас выходит сложная логика, разные усложнённые сценарии, динамические параметры запуска и тп и тд. Без js естественно никуда.

    Поэтому просто зная возможности css, имея здравый смысл, вы будете видеть и знать где что использовать.
    К счастью css тоже в последнее время активно развивается давай нам всё больше возможностей.
    Поэтому - простая штука, что-то типа одноразовых анимации, простого повторения, туда сюда - подумать про css.
    Если к этому добавляются всякие реакции на сложные тайминги, старт-пауза перемотать остановить на промежутке и тп - js.
    Ну и безусловно разные сложные, многоходовки с завязкой друг на друга - однозначно js.

    В целом информации на эту тему достаточно в интернете, мудрить здесь особо не стоит. Поэтому повторюсь: просто здравый смысл и держать в уме знание css и не брезговать его использовать. Нередко кстати сами верстальщики уже готовят эти анимации, но это уже отдельный разговор организации команд и внутрипроектной кухни. Я сторонник того что фронтэндер, пусть и не обязан прям верстать верстать, но знать вёрстку/css должен на очень хорошем уровне.
    Ответ написан
    Комментировать
  • Как отправить массив файлов на сервер?

    @alexalexes
    См. документацию к formData.
    Для прикрепления файлов есть перегрузка метода append на 3 параметра, причем несколько файлов крепятся вот так:
    formData.append("userpic", myFileInput.files[0], "chris1.jpg");
    formData.append("userpic", myFileInput.files[1], "chris2.jpg");

    Обратите внимание на 1-й параметр, в нем нет попыток создать массив, formData должна сама это разрулить, если под одно имя поля последовательно применять append.
    Ответ написан
    1 комментарий
  • Как правильно сделать плавающий блок при скроллинге?

    @xxvxx
    ....
    измени 200 на нужное тебе значение, и я лучше бы добавлял класс active
    .site-branding {
        opacity: 0;
        transition: .5s;
    }
    .site-branding.active {
        opacity: 1;
    }
    .site-branding a{
        height: 0;
        overflow: hidden;
    }
    .site-branding.active a {
       height: auto;
    }

    тогда появление будет плавным и верстка прыгать не будет
    Ответ написан
    3 комментария
  • Объясните, пожалуйста, как для Google Sheets сделать скрипт автоматического экспорта конкретного листа в PDF?

    i229194964
    @i229194964
    Веб разработчик
    Можно использовать следующий скрипт
    function exportSheetToPDF() {
      // Получаем активный Spreadsheet (гугл таблицу)
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      
      // Получаем лист по его имени
      var sheet = ss.getSheetByName('Имя листа');
      
      // Экспортируем лист в PDF
      var url = ss.getUrl();
      url = url.replace(/edit$/,'');
      var sheetId = sheet.getSheetId();
      var pdfName = sheet.getName() + ".pdf";
      var pdfUrl = url + 'export?exportFormat=pdf&format=pdf' +
          '&size=letter' +
          '&portrait=true' +
          '&fitw=true' +
          '&sheetnames=false&printtitle=false' +
          '&pagenumbers=false&gridlines=false' +
          '&fzr=false' +
          '&gid=' + sheetId;
      var options = {
        headers: {
          'Authorization': 'Bearer ' +  ScriptApp.getOAuthToken(),
        }
      }
      var response = UrlFetchApp.fetch(pdfUrl, options);
      var blob = response.getBlob().setName(pdfName);
      
      // Сохраняем PDF в Google Drive
      var folder = DriveApp.getFolderById('ID папки');
      folder.createFile(blob);
    }
    Ответ написан
    1 комментарий
  • Какой курс по тестированию ПО будет лучшим для человека, который учится с нуля?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Подскажите какую-нибудь книжку или бесплатный курс, где нет ничего сложного и лишнего, чтобы с полного нуля научиться диагностировать болезни и пойти работать врачом-диагностом начинающим.
    Ответ написан
    Комментировать
  • Сталкивался ли кто-либо с подобной проблемой взаимодействия слайдера Swiper JS и ВордПрессовского плагина Ninja Forms?

    @furashcka
    Я конкретной проблемы в вашем случаи не знаю, сталкивался с похожим, при других обстоятельствах, суть в том что для родителя с overflow: hidden можно применять scrollLeft, я на вашем сайте посмотрел, и таки да, вам мешает scrollLeft, я не знаю кто его добавляет, но я бы просто после вывода ошибки применял:

    document.querySelector(".mainslider_slider").scrollLeft = 0;


    да это костыль, но лезть в дебри не нужно, не та задача.

    6430875e4cc04640435915.png
    Ответ написан
    3 комментария
  • Ребят как сделать такой слайдер?

    sharp97
    @sharp97
    не фонтан но брызги есть
    Можешь попробовать flickity, с CSS только чуть поработать надо будет
    Ответ написан
    Комментировать
  • Как бы вы решили данную задачу? Генерация Exel файла в JS?

    vovka3003
    @vovka3003
    Фрилансер. Инженер систем безопасности.
    Ответ написан
    Комментировать
  • Как расположить блоки с помощью grid?

    delphinpro
    @delphinpro Куратор тега HTML
    frontend developer
    но не пойму, как 4 блок перенести в 3 колонку сначала?
    Использовал данные стили, но 4 блок был на месте 5, и последующие не заполняли свободные ячейки


    .box:nth-child(3n) {
     grid-column: span 2
    }


    У вас повтор идет через пять блоков. Значит должно стоять 5n – каждый пятый
    Но применяться должно к 4-му блоку в этой пятерке. Значит нужно добавить смещение + 4
    Итог:

    .box:nth-child(5n + 4) {
        grid-column: span 2;
    }


    Ответ написан
    Комментировать
  • Почему transitionend ломается если быстро нажимать на кнопку?

    @StepsOnes
    Проблема заключается в том, что при быстрых кликах на кнопку, очередные вызовы функции `translateY()` начинаются еще до того, как завершится предыдущая анимация (и соответственно, "transitionend" не успевает сработать). Это приводит к созданию множества слушателей события transitionend на одном элементе, что затрудняет правильную работу анимации при последующих кликах.

    Для решения этой проблемы можно добавить проверку наличия класса "translate" на элементе, перед добавлением его на кнопку. Если класс уже присутствует, то следует пропустить выполнение функции и не добавлять новый слушатель события transitionend:

    function translateY(e) {
      if (!e.classList.contains('translate')) {
        e.classList.add('translate');
        e.addEventListener('transitionend', function handler() {
          e.classList.remove('translate');
          e.removeEventListener('transitionend', handler);
        });
      }
    }


    В этом коде мы проверяем, не содержится ли наш элемент класса "translate" перед добавлением этого класса. Далее, если класса нет, то мы добавляем слушатель события transitionend, и при завершении анимации удаляем слушатель и удаляем класс "translate" с элемента.

    Такой подход обеспечивает правильную работу анимации при быстрых кликах на кнопку.

    Отмечу, что в целом, использование js для реализации простой анимации как в данном примере может считаться избыточным. В большинстве случаев, на такие анимации можно обойтись использованием только css (как вы и отметили, через псевдоклассы, например :active).
    Ответ написан
    Комментировать
  • Можно ли исправить ошибку append?

    vool
    @vool
    Разработчик
    setTimeout(function() {
       let script = document.createElement("script");
       script.src = "https://yastatic.net/share2/share.js";
       script.setAttribute("async", "true");
       document.querySelector(".fshare-in").appendChild(script)
       document.querySelector(".ya-share2").classList.remove("not-loaded");
    }, 3e3);
    Ответ написан
  • Как перенести строку при отправке сообщений в тг через js бота?

    i229194964
    @i229194964
    Веб разработчик
    const message = "Первая строка\nВторая строка\nТретья строка";
    bot.sendMessage(chatId, message);

    Если хочешь многострочный текст в качестве сообщений.
    const message = `
      Многострочный
      текст
      сообщения
    `;
    bot.sendMessage(chatId, message);
    Ответ написан
    4 комментария
  • Как правильно прописать цикл?

    @ragq1991
    У Вас происходит переполнение памяти за счет зацикливания. Ваш цикл работает так: пока находится вхождение в строке list делай то-то и то-то, но строка list при этом не изменяется, и Ваш цикл пытается раотать вечно находя снова и снова первое вхождение. Вам необходимо внутри цикла прописывать заумену/удаление найденного вхождения в строке list что бы while искал следующее вхождение и в конце-концов вернул значение -1, то есть вхождений не найдено.
    Ответ написан
    1 комментарий
  • Как ограничить кол-во элементов, которые меняет скрипт appenChild js?

    @ragq1991
    Только у меня не прогружается фрейм в котором смотреть код нужно?
    Ответ:
    <ul>
    <div id="foo">
      <li>You have cat to be kitten me right meow</li>
      <li>Eat plants, meow, and throw up</li>
      <li>my owner today cough furball into food bowl</li>
      <li>I shredded your linens for you</li>
     </div>
      <li>Play time carefully drink from water glass</li>
      <li>jump on human and sleep on her all night long</li>
      <li>purr in the morning and then give a bite to every human around</li>
      <li>waking up request food, purr loud scratch the walls</li>
    </ul>
    Ответ написан
    7 комментариев
  • Почему запрос к mysql внутри цикла while выполняется очень долго?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    Время получения 40000+ записей из таблицы offers = 0.2s

    Вот такой код отрабатывается за 4s

    то есть в цикле делается 40тыс запросов к таблице clients каждый из который выполняется за 0.0001 sec

    вам точно надо прочитать про JOIN'ы чтобы одним запросом получить все нужные данные
    https://www.w3schools.com/sql/sql_join.asp
    Ответ написан
  • Как сделать сохранение текста из input?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    getElementsByClassName() возвращает не ваш input, а живую HTML-коллекцию с единственным элементом. У коллекции нет свойства value.

    - let input = document.getElementsByClassName('form-control');
    + const input = document.querySelector('input.form-control');
    Ответ написан
    2 комментария
  • Как сохранить в localStorage объект, хранящий данные о HTML?

    SagePtr
    @SagePtr
    Еда - это святое
    Разметку сохранять не надо, только данные. Разметка должна генерироваться из этих данных. А можно вообще хранить в корзине только id'шники, а с сервера запрашивать по ним информацию.
    Ответ написан
    Комментировать