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

    WebDev2030
    @WebDev2030
    Битриксоид до мозга и костей
    Регулярные выражения тебе нужны.

    const regex = /.*\((.*)\)/gm; // регулярное выражение
    const str = `bc, ab(c)`; // твоя строка
    let m;
    
    while ((m = regex.exec(str)) !== null) {
        // This is necessary to avoid infinite loops with zero-width matches
        if (m.index === regex.lastIndex) {
            regex.lastIndex++;
        }
        
        // The result can be accessed through the `m`-variable.
        m.forEach((match, groupIndex) => {
            console.log(`Found match, group ${groupIndex}: ${match}`);
        });
    }
    Ответ написан
  • Как вызвать функцию из Webpack бандла?

    WebDev2030
    @WebDev2030 Автор вопроса
    Битриксоид до мозга и костей
    В общем пока у меня только один вариант - это через window. Определяете в window вашу функцию например window.foo = function() {} и она доступна везде, даже не обязательно обращаться через window.foo(), можно просто foo();
    Ответ написан
  • Как написать хороший javascript для Битрикс компонента?

    WebDev2030
    @WebDev2030
    Битриксоид до мозга и костей
    Примерно так и делается. В компоненте bitrix:catalog.section со списком товаров уникальный ID для товара генерируется так:
    $uniqueId = $item['ID'].'_'.md5($this->randString().$component->getAction());
    //$item['ID'] - ID товара
    //$this->randString() - рандомная строка
    //$component->getAction() - по документации "Метод возвращает название текущего действия."
    
    //Ниже пример подключения JS к списку товаров
    $obName = 'ob'.preg_replace('/[^a-zA-Z0-9_]/', 'x', $this->GetEditAreaId($navParams['NavNum'])); //название переменной в которой, помещен JS-объект с логикой компонента.
    
    //Ну и создание объекта в который передаются параметры.
    var <?=$obName?> = new JCCatalogSectionComponent({
    		siteId: '<?=CUtil::JSEscape($component->getSiteId())?>',
    		componentPath: '<?=CUtil::JSEscape($componentPath)?>',
    		navParams: <?=CUtil::PhpToJSObject($navParams)?>,
    		deferredLoad: false, // enable it for deferred load
    		initiallyShowHeader: '<?=!empty($arResult['ITEM_ROWS'])?>',
    		bigData: <?=CUtil::PhpToJSObject($arResult['BIG_DATA'])?>,
    		lazyLoad: !!'<?=$showLazyLoad?>',
    		loadOnScroll: !!'<?=($arParams['LOAD_ON_SCROLL'] === 'Y')?>',
    		template: '<?=CUtil::JSEscape($signedTemplate)?>',
    		ajaxId: '<?=CUtil::JSEscape($arParams['AJAX_ID'])?>',
    		parameters: '<?=CUtil::JSEscape($signedParams)?>',
    		container: '<?=$containerName?>'
    	});
    Ответ написан
    Комментировать
  • Как рандомно менять картинки в блоке?

    WebDev2030
    @WebDev2030
    Битриксоид до мозга и костей
    А где картинки лежат? В общем то имея массив с данными для картинок(каждый элемент может быть как строкой src так и объектом с alt, title, width, height тут уж от задачи зависит), можно просто сделать через setInterval генерацию случайного числа от 0 до количество элементов в массиве - 1, через Math.random тут есть прмиеры. Потом находишь картику в dom на странице или создаешь новую и просто подставляешь параметры картинки в нее.
    Если же нету массива картинок то можно сделать ajax запрос который вернет данные для картинки и подставить в dom. Но это не очень хорошее решение т.е. если ты меняешь картинки для товаров и на странице много товаров то аякс запросов будет куча, а это как-то не оптимально.
    Ответ написан
    Комментировать
  • Какой слайдер подобрать?

    WebDev2030
    @WebDev2030
    Битриксоид до мозга и костей
    Да, слик подойдёт. Твой слайдер сразу должен "из коробки" работать. Разве что стрелочки подправить стилями придётся.
    Ответ написан
    Комментировать
  • Настройка окружения для front end?

    WebDev2030
    @WebDev2030
    Битриксоид до мозга и костей
    Посмотри вот этот сайт там много про это написано. Тебя интересует сборщик проекта gulp или grunt. Я сам использую gulp. Этот парень сделал optimized-gulp-sass пакет я его и использую доработав под себя: сделал поддержку scss, подключил html шаблонизатор и автоаплоад.
    Ответ написан
  • Как загрузить фотографии в инфоблок битрикса, с возможностью изменения порядка вывода фотографий?

    WebDev2030
    @WebDev2030
    Битриксоид до мозга и костей
    В публичной части проще прикрутить своё решение чем городить битриксовское, да и не уверен я что вообще возможно это.
    Множественное свойство типа файл сортируется само по себе. Т.е. если загрузить в админке загрузить фотки и уже после поменять сортировку простым перетягиванием, то оно и в публичной части изменяется. Исходя из этого тебе надо в свойство сохранить ID файлов в нужном порядке.
    Как ответил Максим
    Выводите для каждого изображения в форме скрытое поле. Туда будете писать значение сортировки.
    отправляешь форму на сервер и уже обрабатываешь данные так чтобы получился массив с ID файлов в нужном порядке. И сохраняешь, а для этого понадобится использовать один из методов для сохранения свойств:
    1. https://dev.1c-bitrix.ru/api_help/iblock/classes/c...
    2. https://dev.1c-bitrix.ru/api_help/iblock/classes/c...
    Ответ написан
    Комментировать