Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #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.
Ответить с цитированием
  #2 (permalink)  
Старый 29.02.2024, 17:52
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,076

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
mouseover, mouseout - не распространяется на дочерние элементы barmaley Events/DOM/Window 31 01.06.2017 08:52
each - находит дочерние элементы не только у указанного id V2oD2o jQuery 2 18.05.2016 09:52
Исключить из переменной elems все элементы которые имеют родственные элементы с класс Fenix-77 Общие вопросы Javascript 2 12.04.2016 16:20
дочерние элементы bobo123 Общие вопросы Javascript 9 03.02.2010 22:50
mouseout: Определить дочерние элементы Papa Общие вопросы Javascript 3 03.02.2010 20:29