Ответы пользователя по тегу JavaScript
  • Как в результат substring вывести только число?

    Kentavr16
    @Kentavr16
    long cold winter
    let htmlString =  '<a href="https://site/ua-search/page-4?search=футболка">4</a>';
    let content = htmlString.replace(/<a.*?>(.*?)<\/a>/g, "$1");
    console.log(content);//4


    ЧатГПТ услужливо написал регулярку.
    Ответ написан
    1 комментарий
  • Почему не навешиваются стили на root?

    Kentavr16
    @Kentavr16
    long cold winter
    Можешь стилизовать index.html - инлайново или в теге скрипт должно сработать. Но стоит понимать что корневой компонент приложения - это не про стили и отображение. Это про точку рендеринга, скорее логику. Потому советую его вообще не трогать. Точно так же ширину в сто процентов можно задать основному компоненту, в который ты собираешь приложение (App)
    Ответ написан
  • Как сделать раскрытие подменю js?

    Kentavr16
    @Kentavr16
    long cold winter
    menuLink.addEventListener("click", function (e) {
                    e.stopPropagation(); // замени preventDefault на это
                    menuLink.classList.toggle("_active");
                });

    Код жесть конечно.
    Помогло - отметь решением.
    Ответ написан
  • Как делать такие сложные анимации?

    Kentavr16
    @Kentavr16
    long cold winter
    Два основных варианта - animation-timeline или скрипты. Из минусов анимейшн-таймлайн - относительно слабая поддержка браузерами. Когда я смотрел последний раз было около 65 процентов. Мозила не поддерживает принципиально. Скрипты - это множество библиотек, вот пара примеров. Можно еще руками написать, если знания позволяют.
    Ответ написан
    Комментировать
  • Локальная дата и время?

    Kentavr16
    @Kentavr16
    long cold winter
    Я состряпал для этого функцию. Можно настроить формат как тебе удобно.

    А метод о котором ты говоришь к твоему примеру уже не применим. Так как после toISOString() в dt лежит не объект Date, а строка, которую ты далее изменяешь методами для строк
    . Есть ряд методов которые приводят к локальному времени, но если тебе нужен именно определенный формат с определенными знаками, то ее результат также нужно "допиливать". Мне проще было для этого выделить функцию.
    Ответ написан
  • Как сохранить результат функции в отдельную переменную?

    Kentavr16
    @Kentavr16
    long cold winter
    ответ здесь. Даже с примером по твоему вопросу.
    Проблема в том что ты пытаешься получить асинхронное значение в синхронном коде. Это не будет работать. Почитай про промисы и колбеки в контексте асинхронности джаваскрипт. Будет куда полезнее за строчку кода в ответе на твой вопрос.
    Ответ написан
    Комментировать
  • Задать первому input checked?

    Kentavr16
    @Kentavr16
    long cold winter
    Написать checked в конце хтмл каждого инпута
    Ответ написан
  • Применимы ли в реальном мире фронтенда порождающие паттерны программирования?

    Kentavr16
    @Kentavr16 Автор вопроса
    long cold winter
    Выбирая самое на мой взгляд существенное из комментариев -
    Применимы, но очень ограниченно, и смотря какой фреймворк используется у vue 3 и react кажется с 18 версии более удобно использовать хуки, превращать их в фабрики на мой взгляд бессмысленно лучше упороться в архитектуру разделенную на слои. Последний раз когда писал код подобными паттернами, была обертка над axios


    Ознакомление на начальном этапе своего пути как разработчика нужно для расширения кругозора. Прямой-прямой взаимосвязи между общими описанными паттернами и веб-разработкой(в данном случае фронтом) скорее нет чем есть, если не брать во внимание частности.
    Ответ написан
    Комментировать
  • Как привязать кнопку к панораме в a-frame?

    Kentavr16
    @Kentavr16
    long cold winter
    Если ты хочешь по-простому - добавь кнопку в html и зафиксируй ее при помощи position:absolute в стилях. что-то вроде
    //body html
    <button>Button</button>
    //css
            button{
                position: absolute;
                top: 20px;
                left: 20px;
            }


    Ты пытаешься взаимодействовать с webgl, при этом даже не почитав документацию по библиотеке. Я открыл библиотеку - и там в большом разделе Interactions написано:
    A common misbelief is that we can add a click event listener to an A-Frame entity and expect it to work by directly clicking on the entity with our mouse. In WebGL, we must provide the input and interaction that provides such click events. For example, A-Frame’s cursor component creates a synthetic click event on gaze using a raycaster. Or as another example, Mayo Tobita’s mouse-cursor component creates a synthetic click event when clicking directly on the entity using a raycaster.

    То есть если ты хочешь делать интерфейс "в объеме", прочитай доки. Значительно проще сделать по методу номер один.
    Ответ написан
    Комментировать
  • Почему не переводит в римские цифры?

    Kentavr16
    @Kentavr16
    long cold winter
    потому что
    function roman(all){
    let result = ''
    numAll.map( (item, ind) =>{
    while (item <= all){
    result = result + romAll[ind];
    all = all - item;
    }
    });
    return result;
    };


    Если интересно именно почему - итерация по не тому массиву. Для подробностей проведи дебаггинг кода через отладку или же просто вставь
    function roman(all){
    let result = ' '
    romAll.map( (item, ind) =>{
       console.log(item <= all)//увидишь что для каждой итерации тут false,
    //а значит result останется пустой строкой
    while (item <= all){
    result = numAll[ind];
    all = all - item;
    }
    });
    
    return result;
    };
    Ответ написан
    Комментировать
  • Вопросы по оформлению drag'n'drop ??

    Kentavr16
    @Kentavr16
    long cold winter
    Я сейчас изложу свое понимание - не сверялся со справочниками и никогда не заморачивался по этому поводу, так что могу ошибаться.
    У браузера есть встроенная логика обращения с перетаскиваемыми элементами. Потаскай любую катринку на любом сайте - она потащится. Так же как ссылки, к примеру. Для кастомизации такого рода событий есть event,preventDefault. Ты так отменяешь встроенное действие, а поверх события для этого действия пишешь свою логику. Вот пример. Сгенерирован нейросетью, мне лень дорабатывать. Но логика вполне ясна. Отменил - написал свое. Так что при перетягивании можешь делать абсолютно что угодно.
    П.С. - может есть способ переопределить и стандартное поведение браузера при перетаскивании, но я такого никогда не видел.
    Ответ написан
  • Вопрос по JS-задаче(перемещение элемента)?

    Kentavr16
    @Kentavr16
    long cold winter
    Цитируя MDN -
    Абсолютно позиционируемый элемент — это элемент, чьё вычисленное значение position является absolute или fixed. top, right, bottom и left (en-US) задают смещения от краёв содержащего блок элемента. (Содержащий блок является предком, относительно которого расположен элемент.)
    Объяснение твоего вопроса в последнем предложении. Более наглядно попытался объяснить здесь.
    Ответ написан
  • Как создать api которое возвращает React приложение для внедрения на сторонний сайт?

    Kentavr16
    @Kentavr16
    long cold winter
    основной принцип довольно простой - реакт можно просто загрузить через cdn. Значит тебе достаточно выбрать cdn-провейдера, к которому ты загрузишь свой виджет. В таком случае для клиента все будет выглядеть как подключение нескольких скриптов в шапку (реакт+то что нужно для функционирования виджета, сам виджет) и прописывания в нужном месте
    const widget = document.createElement('div');
          document.body.appendChild(widgetContainer);
               ReactDOM.render(
            <Widget />,
            widget
          );

    Можно сделать обертку над реактом, но это уже все технические моменты
    Ответ написан
    Комментировать
  • Как решить ошибку Uncaught RangeError: Invalid array length при ресайзе?

    Kentavr16
    @Kentavr16
    long cold winter
    webl2m, я вижу два решения. Первое - добавь отсрочку перед выполнением скрипта. Я так понимаю DOM не успевает перерисоваться после втыкивания в него элементов через иннер хтмл, потому в Math.ceil(marqueeWidth / marqueeContentWidth) ты делил на ноль.
    if(!marqueeContentWidth) {
                setTimeout(()=>{
                    const duplicatedItems = Array.from(
                        { length: itemsNeeded },
                        () => originalContent
                      ).join('')
                  
                      marqueeWrap.innerHTML = duplicatedItems
                },100)
            }

    Второй вариант - удалить window.addEventListener('resize', duplicateItems). В чем его назначение? И так при ресайзе будет нормальная прокрутка. Или я недопонял что-то?
    И да - добавь
    .marquee {
      padding: 5px 0;
      background-color: #000;
      color: #fff;
      overflow: hidden; /* вот это вот */
    }

    Еще можно промис написать который будет резолв если элемент отрисован.
    Может есть и другие решения - я нашел такие топорные.
    Ответ написан
  • Как сделать фильтр по городам?

    Kentavr16
    @Kentavr16
    long cold winter
    Ответ написан
    Комментировать
  • Почему при изменении объекта он не меняется в массиве?

    Kentavr16
    @Kentavr16
    long cold winter
    потому что объект присваивается по ссылке а не по значению. Ты вроде как наклеил два ярлыка на коробку, потом оторвал первый. Конечно же второй ярлык как и коробка останется.
    Ответ написан
    Комментировать
  • Как сделать анимацию заголовка при скролле?

    Kentavr16
    @Kentavr16
    long cold winter
    Ответ написан
    Комментировать
  • Как получить значение выбранного option, если стоит niceSelect?

    Kentavr16
    @Kentavr16
    long cold winter
    const selected = document.querySelector('.option.selected'); 
    const value = selectedElement.getAttribute('data-value');
    Ответ написан
  • Почему в toLowerCase( ) нельзя вложить что-то на подобие includes(var)?

    Kentavr16
    @Kentavr16
    long cold winter
    Потому что когда ты пишешь Number(Math.pow(2, 4)); , это одно - сначала вычисляется значение pow от явно переданных чисел, затем оно приводится к строке. то есть
    функция1ЖдуЧислаОтФункции2(функция2)(
    В случае с include ситуация наоборот.
    var.toLowerCaseВозвращаетСтроку().includesОжидаетЗначениеДляОбработки()

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

    Kentavr16
    @Kentavr16
    long cold winter
    ты пытаешься присвоитьevt.target = paginationButtons[k] а хочешь проверить. Для этого используй == или ===.
    Ответ написан