JS Как использовать вложенную карту?

Вот код, ниже часть console.log - моя проблема.

Он регистрирует все 3 класса смещения в теге так:

<tag id="id1" class="$offset1, $offset2, $offset3">

Но мне просто нужно 1 класс смещения в теге, как это:

<tag id="id1" class="$offset1">

Как мне исправить эту проблему?

Объяснение:

добавить новые классы в элемент HTML

function $addClsls(element, ...newClass) {
    return element.classList.add(...newClass);
}

удалить классы из HTML-элемента

function $rmClsls(element, ...rmClass) {
    return element.classList.remove(...rmClass);
}

выберите идентификатор элемента или класс

function $select(element) {
    return document.querySelector(element);
}

функция для добавления или удаления класса из выбранного элемента

function $switch(selectEle, eleClass, indexNum) {
    switch (indexNum) {
        case 0:
            $addClsls(selectEle, eleClass);
            break;
        case 1:
            $rmClsls(selectEle, eleClass);
            break;
        default:
    }
}

получить 3 идентификатора элемента в массив

let groupElements = [$select('#id-1'), $select('#id-2'), $select('#id-
3')];

получить 3 класса элементов в массив (не нужно помещать.)

let groupOffsets = ['offset1', 'offset2', 'offset3'];

установить начальное значение времени

let addTime = 0;

проверьте значение true для сопоставления через groupElements и groupOffsets и установите время задержки

if (true) {
    groupElements.map( i => {
      setTimeout( () => {
        $switch(i, groupOffsets.map( x => x ), 0)
        console.log(i) // <= logs out results
      }, 0 + addTime );
      addTime += 1000;
    });
}

ЦЕЛЬ - выйти из системы так:

<tag id="id-1" class="offset1"> </tag>
<tag id="id-2" class="offset2"> </tag>
<tag id="id-3" class="offset3"> </tag>

но проблема такова:

<tag id="id-1" class="offset1,offset2,offset3"></tag>
<tag id="id-2" class="offset1,offset2,offset3"></tag>
<tag id="id-3" class="offset1,offset2,offset3"></tag>

1 ответ

Ну, я исправил это. Так что я собираюсь ответить на свой вопрос.;)

Я попробовал другой способ сделать функцию карты, я использовал 2-мерный массив вместо 2 отдельных массивов

let groupItems = [ 
    [$select('#id-1'), 'offset1'],
    [$select('#id-2'), 'offset2'],
    [$select('#id-3'), 'offset3']
]
groupitems.map( items => {
            setTimeout( () => {
                // destruct first dimensional
                let [ x ] = [items];
                // destruct second dimensional
                let [ i, j ] = x;
                // first round i = $select('#id-1'); j = 'offset2';
                // second and third round so forth
                sectionSwitch( i, j, 1);
            }, 0 + addTime);
            addTime += 1000;
        })
Другие вопросы по тегам