Ответы пользователя по тегу JavaScript
  • Какой плагин сможет реализовать такую диаграмму?

    @fear-cry
    Frontend Developer
    Делал похожий на бесплатном легком плагине chartist-js
    https://github.com/gionkunz/chartist-js

    602e10b28beba634045992.png
    Ответ написан
    Комментировать
  • Как генерировать PDF в JS?

    @fear-cry
    Frontend Developer
    Есть еще такой вариант (на чистом бекенде): шаблоны заранее готовить в PDF формате со всеми статическими данными (например, банковскими реквизитами). При запросе скачивания дописывать в пустые поля и отдавать файл. И не придется морочить голову с генерацией PDF с нуля, т.к. дописывать данные в существующий PDF это легкая операция. На проде так и сделали.
    Ответ написан
    Комментировать
  • Как решить проблему с инициализацией модуля?

    @fear-cry
    Frontend Developer
    Тут прямо просится какой нибудь бандлер (например webpack): потому что надо будет что-то делать с версионностью скриптов (руками добавлять ?v0.1 в конце имени файла - дело такое себе). Ещё минификация кода, подключение дополнительных пакетов из npm, дев сервер с горячей перезагрузкой, транспайлер babel. Сюда же можно добавить CSS обработку (препроцессор scss/less, автопрефиксер, минификация) и другие плюшки web-разработки. Вспоминаю, как было трудно поддерживать проекты без этого.
    Ответ написан
    Комментировать
  • Что в этом скрипте не так?

    @fear-cry
    Frontend Developer
    Вы многократно подписываетесь на событие клика $('.menu li').on('click', function(){ при каждом ресайзе, поэтому и колбек вызывается много раз при клике.
    Нужно подписку вынести из ф-ции resizeScrenn и проверять на флаг isTablet, а в resizeScrenn только обновлять этот флаг вот так:

    /* Ready */
    $(function() {
        $('.menu li').on('click', function() {
            if( window.isTablet && $(this).children('.submenu').length ) { // обработка флага isTablet происходит при клике
                $(this).children('.submenu').slideToggle(300);
            }
        });
    
        function resizeScrenn() {
            window.isTablet = $(window).width() <= 960;
        }
        $(window).resize( resizeScrenn ); // передаем ссылку на функцию
        resizeScrenn(); //вызываем ф-ию при загрузке страницы чтобы сразу трекнуть ширину экрана
    });
    Ответ написан