Ответы пользователя по тегу JavaScript
  • Не срабатывает прокрутка если добавить дополнительный блок таблицу в диаграмме Гантта Apache Echarts?

    gtomilin
    @gtomilin Автор вопроса
    JavaScript HTML CSS
    import { ECharts } from 'echarts';
    import { useEffect } from 'react';
    
    import { getDataZoom } from '@opm/shared/echarts';
    
    export const useScrollEChart = (
      echarts: ECharts | undefined,
      dataZoomId: string,
    ) => {
      useEffect(() => {
        // код ниже для реализации вне React
        if (!echarts) return;
        let startPercent: number;
        let endPercent: number;
    
        const mouseWheelHandler = (e: WheelEvent) => {
          // тут нужно получить id той оси которую нужно скроллить - тут это реализовано через кастомный хук - но вы можете это сделать как вас будет удобно
          const dataZoom = getDataZoom(echarts, [dataZoomId]);
    
          startPercent = dataZoom[0].start;
          endPercent = dataZoom[0].end;
    
          if (e.deltaY > 0 && endPercent < 100) {
            const increment = Math.min(4, 100 - endPercent);
            startPercent += increment;
            endPercent += increment;
          }
          if (e.deltaY < 0 && startPercent > 0) {
            const decrement = Math.min(4, startPercent);
            startPercent -= decrement;
            endPercent -= decrement;
          }
    
          // передаём параметры для echart dataZoom потому что это единственный способ проскроллить
    
          echarts.dispatchAction({
            type: 'dataZoom',
            batch: [
              {
                dataZoomId,
                start: startPercent,
                end: endPercent,
              },
            ],
          });
        };
    
        echarts.getDom()?.addEventListener('wheel', mouseWheelHandler);
    
        return () => {
          echarts.getDom()?.removeEventListener('wheel', mouseWheelHandler);
        };
      }, [echarts, dataZoomId]);
    };
    Ответ написан
    Комментировать
  • Почему дочерние элементы странно удаляются?

    gtomilin
    @gtomilin
    JavaScript HTML CSS
    1. Неверно делать const output = form.nextElementSibling; - в будущем могут появиться новые элементы и nextElementSibling будут недействительным, надо получить ссылку на конкретный элемент document.querySelector('.output')
    2. Children сохраняет предыдущее значение и результате получается такой эффект. Подробнее тут
    3. Два варианта как решить

    //Удаление дочерних элементов перед заполнением
      let childrens = [...output.children]; 
      childrens.forEach(item => item.remove())


    //Удаление дочерних элементов перед заполнением
      output.innerHtml = ''
    Ответ написан
    Комментировать
  • Как убрать ссылку с элемента, если он внутри тега а?

    gtomilin
    @gtomilin
    JavaScript HTML CSS
    1 - Нужно семантически верно сверстать блоки и не будет таких проблем - внутри ссылки не должно быть каких-то интерактивных элементов
    2 - Проверил preventDeafault всё отработало

    63c9bbf8156a9939995020.jpeg
    Ответ написан
    Комментировать
  • Как в document.querySelector вставить html?

    gtomilin
    @gtomilin
    JavaScript HTML CSS
    Напишите, что получаете в posts
    console.log(posts)
    Ответ написан
    Комментировать
  • Как прочитать данные json по ссылке?

    gtomilin
    @gtomilin
    JavaScript HTML CSS
    fetch('https://jsonplaceholder.typicode.com/posts.json')
    // получили Джейсон с сервера
    .then( anyName => anyName.json() )
    // Преобразовали Джейсон в объект джаваскрипи
    .then ( againAnyName => {
     console.log(againAnyName)
    let jsonFile = againAnyName;
    }
    // выводим полученный объект в консоль, и/или присваиваем объект новой переменной


    Как-то так, полагаю
    Ответ написан
    Комментировать
  • Почему массив определяется как строка?

    gtomilin
    @gtomilin Автор вопроса
    JavaScript HTML CSS
    Нашёл ответ - favorites определяется как строка, а не как массив потому что в localStorage была внесена строка. Удалив её всё заработало
    Видимо на каком-то этапе случайно внёс item как строку, поэтому не создавался новый массив JSON и не возможно было извлечь массив из JSON item.
    Ответ написан
    Комментировать