Ответы пользователя по тегу JavaScript
  • Как отправить на почту JS данные Modx?

    DanArst
    @DanArst Куратор тега JavaScript
    Гриффиндор в моде при любой погоде!
    Не понял, вы в форму модального окна вставляете картинку и заголовок, но не знаете как их отправить?
    Ну так вставляйте их в скрытые поля. И чанке письма, если такой есть, отобразите имя поля, в которое будет вставляться заголовок. Картинка будет во вложении. Чтобы вложение отправить добавьте форме атрибут enctype="multipart/form-data"
    Ответ написан
    Комментировать
  • Как можно при наведении подсвечивать area в map?

    DanArst
    @DanArst Куратор тега CSS
    Гриффиндор в моде при любой погоде!
    Я использовал maphilight.js
    Ответ написан
  • Как правильно сделать ajax окно в msFavorites?

    DanArst
    @DanArst Куратор тега JavaScript
    Гриффиндор в моде при любой погоде!
    Ну дык ты get-запрос делаешь на страницу izbrannoe.html, которой у тебя нет, или она не опубликована. Твой скрипт тупо падает
    Ответ написан
  • Как сравнить значение между двумя числами?

    DanArst
    @DanArst Куратор тега JavaScript
    Гриффиндор в моде при любой погоде!
    Если я правильно понял задачу.
    function activeNUM() {
        let currentNum = 42;
        numList.each(function(idx) {
          if (idx != numList.length - 1) {
            if (currentNum >= $(this).attr('data-num') && currentNum < numList.eq(idx + 1).attr('data-num')) {
              $(this).addClass('active');
            }
          }
        });
    }
    Ответ написан
    Комментировать
  • Почему swiper-слайдер ломает Грид-сетку всего блока?

    DanArst
    @DanArst Куратор тега CSS
    Гриффиндор в моде при любой погоде!
    Потому что swiper у вас инициализирован с самого начала.
    Вы бы хоть доку почитали, она ведь максимально понятная.

    768: {
    enabled: false,
    slidesPerView: 5,
    }

    Я так понимаю, что этими строчками вы якобы хотели инициировать swiper по бреикпоинту, но это так не работает.
    Сделайте так:
    let breakpoint_mobile_min = window.matchMedia('(min-width: 768px)'),
             projectInit = false,
             projectSlider= Swiper;
    
    function projectSliderInit() {
            if (breakpoint_mobile_min.matches) {
                if (projectInit) {
                    if ($('#slider3').hasClass('swiper-initialized')) {
                        projectSlider.destroy();
                        projectInit = false;
                    }                
                }            
            } else { 
                if (!projectInit) {
                    projectInit = true;
                    projectSlider= new Swiper('#slider3', {
                        navigation: {
                           nextEl: '.swiper-button-next',
                           prevEl: '.swiper-button-prev',
                           enabled: false,  //определитесь нужны вам стрелки или нет
                        },
                        pagination: {
                           el: '.swiper-pagination',
                           clickable: true,
                        },    
                        slidesPerView: 1,
                    });
                }           
            }
    }
    $(window).on('resize load', function () {
       projectSliderInit();
    });
    Ответ написан
  • Select не прогружает варианты выбора, не могу разобраться, почему?

    DanArst
    @DanArst Куратор тега JavaScript
    Гриффиндор в моде при любой погоде!
    selectElements - это select-ы с классом val, а у select5 у тебя такого класса нет, есть только added
    Ответ написан
    1 комментарий
  • Как сделать такой слайдер?

    DanArst
    @DanArst Куратор тега JavaScript
    Гриффиндор в моде при любой погоде!
    Как вы пытались реализовать и что не получилось?
    Примеров таких слайдеров в интернете просто море. Вот например с помощью Swiper.
    Если будете использовать loop, то значение slidesPerView должно быть больше как минимум в 2 раза, чем общее количество слайдов.
    Ответ написан
    1 комментарий
  • Как вынести scroll за пределы swiper?

    DanArst
    @DanArst Куратор тега JavaScript
    Гриффиндор в моде при любой погоде!
    У Swiper есть отличная документация.
    Если бы вы ее прочитали, то увидели бы, что делается это очень просто:
    const mySwiper = new Swiper('.slider-3steps', {
      scrollbar: {
        el: document.getElementById('swiperScrollbar') //где swiperScrollbar - id скорллбара соответственно
      },
    });
    Ответ написан
    Комментировать
  • Как сделать swiper слайдеры независимыми друг от друга?

    DanArst
    @DanArst Куратор тега JavaScript
    Гриффиндор в моде при любой погоде!
    Ну так если вы выводите блоки в цикле, то логично, что и swiper нужно инициировать в цикле.
    let containers = document.getElementsByClassName('promo-group__swiper-container');
    Array.from(containers).forEach(function(element) {
        var swiper = new Swiper(element, {
           navigation: {
              nextEl: element.querySelector('.swiper-button-next'),
              prevEl: element.querySelector('.swiper-button-prev')
           }
        });
    });
    Ответ написан
  • Как правильно открепить прилипающее меню на сайте?

    DanArst
    @DanArst Куратор тега CSS
    Гриффиндор в моде при любой погоде!
    Конечно будет пустое пространство, ведь теперь у него position: static.
    А почему его там нет?
    Потому что есть еще один стиль transform: translateY(-200%);. Уберите его и margin-bottom, если вам не нужен отступ снизу.
    Ответ написан
    Комментировать
  • Считать данные с текущего бокса?

    DanArst
    @DanArst Куратор тега JavaScript
    Гриффиндор в моде при любой погоде!
    1) Зачем делать div-ами то, что должно быть формой?
    2) Зачем вешать обработчик через инлайновый onclick? Вынесите нормально в js
    3) Что вообще делает ваш код? Т.е. почему у первого подобия кнопки в send указан data_1, а у второго data_2?
    4) Почему у вас одинаковые id у двух пар элементов? От этого страница конечно работать не перестанет, но вы нарушаете семантику, ведь id - это все таки уникальный идентификатор.
    Ответ написан
    Комментировать
  • Как сделать сортировку ul li через js?

    DanArst
    @DanArst Куратор тега JavaScript
    Гриффиндор в моде при любой погоде!
    А почему бы не сделать это сразу на бэке, вместо того, чтобы тратить ресурсы пользователя?
    Ну если вдруг такой "возможности" нет, то можно сделать и на CSS:
    ul {
       display: flex;
       flex-direction: column;
    }
    .lang-item-10 {
       order: 1;
    }
    .lang-item-2 {
       order: 2;
    }
    Ответ написан
    1 комментарий
  • Как добавить header когда страница скролится вверх?

    DanArst
    @DanArst Куратор тега CSS
    Гриффиндор в моде при любой погоде!
    Ответ написан
    2 комментария
  • Как вынести кнопки за предел swiper?

    DanArst
    @DanArst Куратор тега JavaScript
    Гриффиндор в моде при любой погоде!
    Оберните слайдер в еще один контейнер и укажите кнопки там, условно такая разметка
    <div class="slider-wrapper">
       <div class="swiper">
          <div class="swiper-wrapper">
             <div class="swiper-slide">Slide 1</div>
             <div class="swiper-slide">Slide 2</div>
             <div class="swiper-slide">Slide 3</div>
           </div> 
        </div>
        <!-- Кнопки -->
        <div class="myslider-prev swiper-button-prev"></div>
        <div class="myslider-next swiper-button-next"></div>
    </div>

    И в js укажите так
    var swiper = new Swiper('.swiper', {
      ...тут ваши прочие параметры
      navigation: {
        nextEl: '.myslider-next',
        prevEl: '.myslider-prev',
      },
    });
    Ответ написан
    1 комментарий
  • Как сделать счетчик ввода значений?

    DanArst
    @DanArst Куратор тега CSS
    Гриффиндор в моде при любой погоде!
    Раз можно вводить только цифры, то используйте input[type="number"], а не input[type="text"].
    Ответ написан
    Комментировать
  • Как в слайдере Swiper можно сдвинуть swiperslideactive и swiperslidenext на один индекс вправо?

    DanArst
    @DanArst Куратор тега JavaScript
    Гриффиндор в моде при любой погоде!
    Зачем такие велосипеды придумывать? Вы же разметку в HTML наверное задаете? Не проще ли в слайде с текстом первым поставить тот, который связан со вторым слайдом фото и не придется ничего изобретать.
    Ответ написан
    Комментировать
  • Почему не работает ajax?

    DanArst
    @DanArst Куратор тега JavaScript
    Гриффиндор в моде при любой погоде!
    Потому что в js у вас data - это якобы массив, хотя с обработчика вы возвращаете всегда строку.
    Как вариант в обработчике измените код на следующий везде, где возвращаете результат:
    $result = array();
    if (!$stmt->rowCount()) {
        $result['error_login'] = "Пользователь с такими данными не зарегистрирован";
        echo json_encode($result, JSON_UNESCAPED_UNICODE);
    }
    ...
    $_SESSION['user_id'] = $user['id'];
    $result['us3r_id'] = $_SESSION['user_id'];
    echo json_encode($result, JSON_UNESCAPED_UNICODE);


    И добавьте в AJAX-запрос параметр dataType: "json"

    p.s отслеживайте, что передается и что возвращается в DevTools во вкладке Network, а не Console
    Ответ написан
    1 комментарий
  • Как сделать, что бы блок выезжал при клике по стрелке?

    DanArst
    @DanArst Куратор тега CSS
    Гриффиндор в моде при любой погоде!
    У вас же уже написан скрипт для переключения класса у кнопки .uk, так добавьте туда переключение класса для блок .cardC
    $(document).ready(function() {
      $('.uk').click(function() {
        $(this).toggleClass('open');
        $('.cardC').toggleClass('shown'); //например класс shown будет отвечать за состояние показан-скрыт
      });
    });


    И соответственно в стилях у cardC нужно убрать анимацию, но добавить transition. Также добавить стиль для .cardC.shown с нужным для вас значением translateY.
    Ответ написан
    2 комментария
  • Почему не выбираются элементы с помощью querySelectorAll?

    DanArst
    @DanArst Куратор тега JavaScript
    Гриффиндор в моде при любой погоде!
    Потому что эти элементы создаются динамически. Можешь написать обработчик события клика по ним например так:
    document.addEventListener('click', function (e) {
        if (e.target.classList.contains('js--btn-delete')) {
            //тут пишешь что нужно делать по клику
        };
    });
    Ответ написан
    Комментировать
  • Почему способ объявления переменной i влияет на результат?

    DanArst
    @DanArst Куратор тега JavaScript
    Гриффиндор в моде при любой погоде!
    Можете почитать про разницу между var и let тут
    Ответ написан
    Комментировать