• Замыкания в чем конкретно разница?

    for (var i = 0; i < thumbnails.length; i++) {
      thumbnails[i].addEventListener('click', function () { // Корень проблемы здесь.
        // Ты обьявляешь (не вызываешь!) в цикле анонимную функцию. При создании эта функция получает
        // ссылку на внешнее лексическое окружение, которым, в данном случае, является тело цикла for.
        // Когда функция вызывается, в своем лексическом окружении i она не находит, и продолжает поиск
        // во внешнем. К моменту вызова, цикл завершен, и i в его лексическом окружении равна thumbnails.length
        fullPhoto.src = photos[i];
      });
    }
    Ответ написан
    Комментировать
  • Замыкания в чем конкретно разница?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Не работает, потому что к тому времени, когда функция onclick будет вызвана, переменная i дойдет до самого конца цикла. И будет использоваться именно это, последнее значение.

    В первом варианте переменная i используется в конкретной итерации, т.е. берется photos[i] и это значение дальше передаётся, а сама переменная i больше не используется, так что в целом пофиг, как там она дальше будет изменяться.

    Ведь в первом варианте вызов addThumbnailClickHandler(thumbnails[i], photos[i]) происходит прямо в цикле, сразу, без промедлений, а не откладывается на потом. В этот момент конкретные значения передаются в качестве параметров. И далее из-за замыкания они так и остаются висеть в памяти и ссылаться на то, что нужно.

    Немного изменим код, и он снова перестанет работать :)
    var i;
    
    var addThumbnailClickHandler = function (thumbnail) {
      thumbnail.addEventListener('click', function () {
        fullPhoto.src = photos[i]; // i === thumbnails.length
      });
    };
    
    for (i = 0; i < thumbnails.length; i++) {
      addThumbnailClickHandler(thumbnails[i]);
    }
    Ответ написан
    Комментировать
  • Можно ли назначать обработчик события внутри другого обработчика?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Можно, но на hide надо этот обработчик удалять. иначе при каждом открытии у вас будет добавляться новый обработчик, и они все будут вызываться на закрытие. В вашем случае вы вряд ли увидите какие-то реальные проблемы, но это неправильно. поставьте рядом с removeClass console.log и откройте-закройте несколько раз - увидите в чем проблема.

    но насколько он верный?

    Зачем вы так делаете вообще? что мешает навешать сразу два обработчика на открытие и закрытие и все?
    Ответ написан
    9 комментариев
  • Есть ли у bootstrap следующая возможность?

    alams_stoyne
    @alams_stoyne
    Full Stack Developer - #PHP #CSS #JS #DB
    У bootstrap - НЕТ но написать такое дело 3 минут.

    $(document).on("click","[data-triger-class]",function(e){
            e.preventDefault();
            let target = $(this).data('triger-class');
            $('.'+target).addClass('new_class');
        });
    Ответ написан
    6 комментариев
  • Как изменить данные передаваемые через ajax?

    romanko_vn
    @romanko_vn
    var test = {success: "Корзина покупок обновлена!", total: "Товаров: 0 (0 руб.)"};
    test.price = test.total.replace(/.*\((.*)\)/, '$1');
    test.total = test.total.replace(/\(.*\)/, '');
    console.log(test);
    
    //[object Object] {
    //  price: "0 руб.",
    //  success: "Корзина покупок обновлена!",
    //  total: "Товаров: 0 "
    }
    Ответ написан
    1 комментарий
  • Как правильно собрать спрайты svg в gulp?

    delphinpro
    @delphinpro
    frontend developer
    Многоцветные, как правило, не нуждаются в изменении цветов через css. Но иногда бывает.

    Я в своих иконках использую только заливку (без обводки). Это немного упрощает управление.
    Удаляю атрибуты заливки только черным цветом
    $('[fill="#000"]').removeAttr('fill');
    $('[fill="#000000"]').removeAttr('fill');

    Черный - это дефолтный цвет и он не нужен, только мешает переопределению в css.
    Всё, что не черное — цветное, и попадает в спрайт как есть.
    Базовый стиль для заливки иконок
    fill: currentColor
    думаю, понимаете, в чем сила.

    Особые иконки, в том числе многоцветные, требующие нестандартного поведения или управления цветом, правятся вручную — элементы группируются и им назначаются отдельные классы, с помощью которых происходит переопределение свойств в css.
    Ответ написан
    3 комментария
  • Как взять только те файлы которые начинаются с приставки gb?

    sharnirio
    @sharnirio
    Front-end developer
    Была похожая задача только для картинок.
    Попробуйте так:
    gulp.task('inlinesource', function () {
    return gulp.src('./app/modules/**/gb*.+(html)') - здесь нужно выбрать только те файлы имя которых начинается с gb. Например gb-info.html
    .pipe(inlinesource())
    .pipe(gulp.dest('./dist/'));
    })
    Ответ написан
    Комментировать
  • Как взять только те файлы которые начинаются с приставки gb?

    search
    @search
    мама говорит что я особенный
    return gulp.src('./app/modules/**/gb*.html')
    Ответ написан
    Комментировать
  • Почему стартовый шаблон не запускается?

    @yarnstart
    Превозмогание и React
    Добрый день, также столкнулся с данной проблемой, она возникала с 10 нодой, вот пул реквест для фикса https://github.com/CSSSR/csssr-project-template/pu... , после этого yarn start и всё заработает.
    Ответ написан
    Комментировать
  • Где найти видео по переноса верстки на шаблон opencart?

    Ищите курс по opencart у Webdesign master
    Ответ написан
    Комментировать
  • Как понять какой дизайн лучше?

    mixail_fet
    @mixail_fet
    Дизайнер веб-интерфейсов
    Для этого должно проявится, так называемое "чувство прекрасного", но на самом деле все проще. Макет определяется по нескольким критериям:

    1. Выполняет ли дизайн минимальные потребности пользователя?
    2. Выполняет ли дизайн цели бизнеса?
    3. Достаточно ли четко предоставлена суть сайта?
    4. Насколько удобен сайт?
    5. Насколько много будет зарабатывать сайт?

    Чтобы ответить на эти вопросы - нужно проводить анализы, у профессионалов есть уже четкое представление, как примерно должен выглядеть "хороший сайт", поэтому они могут сходу дать оценку и обосновать ее. Однако в нынешнем веке и профессионалу свойственно ошибаться, та функция которая кажется абсурдной, иногда приносит невероятный буст по доходам.

    Поэтому могу четко сказать - это приходит с опытом.
    Ответ написан
    Комментировать
  • Как понять какой дизайн лучше?

    usdglander
    @usdglander
    Yipee-ki-yay
    Чтобы оперировать понятиями "лучше" и "хуже", то нужно ввести для объекта какую то объективную количественную оценку. В противном случае всё очень субъективно.
    А какую количественную оценку вводить - уже зависит от задач бизнеса. В большинстве случаев она выражается в количестве получаемой бизнесом прибыли. То есть можно при прочих равных условиях сравнивать сколько прибыли даёт один дизайн и сколько другой. Это и будет вашим "лучше" и "хуже".
    Ответ написан
    Комментировать
  • Как понять какой дизайн лучше?

    pospelov
    @pospelov
    Руководитель веб-студии
    Плохого и хорошего дизайна не бывает. Все зависит от задачи.

    Первый лучше, если хотите продавать в розницу, вовлечь пользователя в продажу, потому что он:
    - информативнее
    - в нем есть акция, и не одна
    - лучше навигационная доступность и соответствие ожиданиям
    - понятна краткая информация о компании (доставка, навигация об организации, преимущества)
    - в итоге больше похож на классический интернет-магазин

    Второй дизайн больше похож на сайт крупного бренда-производителя, и нужно выбирать этот вариант, если вы производитель, и задача сайта стоит выстраивание коммуникаций с дилерской сетью, чем продажа через сайт.
    Ответ написан
    Комментировать
  • Как убрать белые края на сайте?

    @ZZiliST
    Изучаю JS, CSS, HTML, PHP
    У вас для тега body прописаны стили
    margin-left: .7in;
    margin-right: .7in;
    margin-top: .75in;
    margin-bottom: .75in;

    Пропишите в css файле

    body{
    margin:0;
    }
    Ответ написан
    3 комментария
  • Как включить масштаб при выделении в фигма?

    mixail_fet
    @mixail_fet
    Дизайнер веб-интерфейсов
    Прям вот так, пустую область показывать не будет. Если вам нужно узнать расстояние от одного объекта до другого, выделяйте один объект, зажимайте ALT и наводите на другой объект. Примерно как на картинке

    5c179036da718915508198.png
    Ответ написан
    2 комментария
  • Как отключить приближение к формам в мобильной версии сайта?

    spacenear
    @spacenear
    React Web Developer
    Сталкивался с такой проблемой и нашел решение - нужно сделать размер шрифта в форме 16px и более - тогда не будет приближать.
    Ответ написан
    1 комментарий
  • Вывод снипета только на определенном ресурсе?

    ruslan_aleev
    @ruslan_aleev
    MODX с cat-Art.ru
    Обернуть вызов сниппета условием с проверкой по id ресурса, например (тут проверка по id = 5 ресурса):

    [[*id:is=`5`:then=`
    
    [[getImageList?
    &tvname=`yes`
    &tpl=`yes-no`
    ]]
    
    `]]


    О других фильтрах смотрите тут - https://cat-art.ru/articles/filtryi-vvoda-vyivoda-...
    Ответ написан
    Комментировать
  • Почему некорректно отображается шрифт?

    IlyaDeveloper
    @IlyaDeveloper
    UX/UI Дизайнер
    • Убедись что реально шрифт поддерживает латиницу!
    • Сгенери на https://transfonter.org/
    • Скачай архив после генерации и проверь там есть отображение если все четко то подключи!


    Также как вариант подключи c гугл фонт, ну или скачай и проделай все как выше : Здесь

    Также не забывай задавать для более четкого отображения :
    -moz-osx-font-smoothing: grayscale;
      -webkit-font-smoothing: antialiased;
      text-rendering: optimizeLegibility;
      font-feature-settings: 'liga';
    Ответ написан
    2 комментария
  • Gulp-autoprefixer и PostCSS Autoprefixer в чем разница?

    Rapt0p7
    @Rapt0p7
    FrontEnd developer in Eastwood
    Под капотом ни в чем. gulp-autoprefixer использует postcss и autoprefixer, разве что в gulp-autoprefixer их версии чуть старее. Т.е. это такая обертка над postcss специально для gulp.
    Код
    Ответ написан
    1 комментарий
  • Как сделать вывод пользовательского поля с типом привязка к highloadblock?

    AlexeyGfi
    @AlexeyGfi
    YouTube >>> Битриксоид из Колхоза
    По идее, у вас при чтении раздела
    ["UF_POSITION_USER"]["VALUE"]хранит ID записи хайлоадблока.

    По нему нужно получить поле, которое хранит название должности.
    На скриншоте не видно, предположим оно хранится в UF_NAME.

    Если выборка хранит референс, возможно через него должность уже подтянута и можно дотянуться до UF_NAME.
    Если нет — читать самостоятельно и выводить, а чтобы каждый раз не отправлялся запрос к базе данных — кешировать компонент.

    Если есть необходимость (много мест, где нужна должность), неплохо было бы организовать так, чтобы в системе хранился отдельный кеш, который хранит все должности, привязанные к ID (массив вида
    [1] => [ "UF_NAME" => "Лаборант-исследователь",
    [2] => [ "UF_NAME" => "Стажер-исследователь",

    ). И тогда просто по коду записи, из любого места проекта получали бы должность. И чтобы этот кеш хранился «вечно», а перетирался только если добавлена/отредактирована/удалена запись хайлоадблока
    Ответ написан