Задать вопрос
  • Как сформировать меню на уровне js или jquery?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Заголовки, элемент меню и классы для его пунктов:

    const headers = document.querySelectorAll('section > h2');
    const menu = document.querySelector('вам виднее, что тут должно быть');
    const className = 'inner__menu anchor-js';

    Собираем разметку:

    const menuHTML = Array.from(headers, n =>
      `<a class="${className}" href="#${n.parentNode.id}">${n.innerText}</a>`
    ).join('');
    
    // можем добавить новое содержимое, не трогая то, что уже есть
    menu.insertAdjacentHTML('beforeend', menuHTML);
    // или новый контент перезапишет существующий
    menu.innerHTML = menuHTML;

    Или создаём элементы напрямую:

    const menuElements = Array.from(headers, n =>
      Object.assign(document.createElement('a'), {
        className,
        href: `#${n.parentNode.id}`,
        text: n.textContent,
      })
    );
    
    // добавляем
    menu.append(...menuElements);
    // перезаписываем
    menu.replaceChildren(...menuElements);
    Ответ написан
    Комментировать
  • Php как правильно перевести дату?

    Adamos
    @Adamos
    $duration = new DateInterval('PT24H0M0S');
    Дальше сам.
    Ответ написан
    1 комментарий
  • Vue+js как сделать чтобы axios выполнялся поочередно?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    Если это именно то, чего ты хочешь, то ты можешь сделать себе очередь, условно так:
    class AsyncQueue {
      constructor(result) {
        this.queue = [];
        this.result = result;
      }
      isStreaming = false;
      add(promise) {
        this.queue.push(promise);
        if(!this.isStreaming)
          this.stream();
      }
      async stream() {
        this.isStreaming = true;
        for await (const result of this.queue) {
          this.result(result);
        }
        this.queue.length = 0;
        this.isStreaming = false;
      }
    }

    Vue:
    data() {
      const schedulesQueue = new AsyncQueue(this.showLoadedSchedules);
      return {
        schedulesQueue,
        // ...
      }
    },
    
    methods: {
      showLoadedSchedules(response) {
        if(this.curDateEvent) {
          this.changeMobileDay(this.curDateEvent);
        }
        // ...
      },
      addSchedulesToQueue(locationId, gameModeId, selectedHeadsets, day) {
        let param = 'locationId=' + locationId + '&gameModeId=' + gameModeId + '&headsets=' + selectedHeadsets
    
        if (day)
          param += '&day=' + day;
    
        return this.schedulesQueue.add(
          axios({
            method: 'get',
            url: 'schedules?' + param
          }).catch((error) => {})
        );
      }
    }
    Ответ написан
    Комментировать