Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Помогите обернуть дочерние элементы (https://javascript.ru/forum/dom-window/85774-pomogite-obernut-dochernie-ehlementy.html)

firsmember 29.02.2024 14:14

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

Имеется следующий 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 у которого текст начинается со знака "-" и так далее по аналогии.

рони 29.02.2024 17:52

firsmember,
напишите, образец html, того что надо получить в результате.


Часовой пояс GMT +3, время: 07:03.