Показать сообщение отдельно
  #1 (permalink)  
Старый 29.02.2024, 14:14
Кандидат Javascript-наук
Отправить личное сообщение для firsmember Посмотреть профиль Найти все сообщения от firsmember
 
Регистрация: 08.11.2019
Сообщений: 113

Помогите обернуть дочерние элементы
Всем добрый день.

Имеется следующий html:
<div class="selectm23-options"><div class="selectm23-option" data-value="36"> Clothing</div><div class="selectm23-option" data-value="39">- Accessories</div><div class="selectm23-option" data-value="38">- Hoodies</div><div class="selectm23-option" data-value="37">- Tshirts</div><div class="selectm23-option" data-value="41">-- Decor</div><div class="selectm23-option" data-value="40"> Music</div></div>


Пробовал так, но выходит совсем не то, что мне нужно:
let allOptions = document.querySelectorAll('.selectm23-option');
let parent = document.querySelector('.selectm23-options');
let groups = [];

allOptions.forEach(option => {
    let optionText = option.innerText;
    let level = optionText.lastIndexOf('-') + 1;

    if (level > 0) {
        if (!groups[level]) {
            groups[level] = document.createElement('div');
            groups[level].className = 'havechild';
        }
        groups[level].appendChild(option.cloneNode(true));
    } else {
        if (groups.length > 0) {
            parent.insertBefore(groups[1], option);
            for (let i = 2; i < groups.length; i++) {
                groups[i - 1].appendChild(groups[i]);
            }
            groups = [];
        }
        parent.appendChild(option.cloneNode(true));
    }
});

if (groups.length > 0) {
    parent.insertBefore(groups[1], allOptions[allOptions.length - 1].nextSibling);
    for (let i = 2; i < groups.length; i++) {
        groups[i - 1].appendChild(groups[i]);
    }
}


Помогите пожалуйста написать javascript код, который обернет все div у которых текст начинается со знака "-" в div с классом "havechild" вместе с div который стоит перед ними без знака "-" в тексте, также все div у которых текст начинается со знаков "--" нужно обернуть в div с классом "havechild" вместе с идущим перед ними div у которого текст начинается со знака "-" и так далее по аналогии.

Последний раз редактировалось firsmember, 29.02.2024 в 14:50.
Ответить с цитированием