@alexanderbulatov
Fullstack разработчик

Почему зависает страница при вставке клонированных узлов?

Проблема:
Не вставляются новые элементы в DOM

Подробнее:
Есть код
let ul = document.querySelector(".store-links");
let elem = document.createElement("i");
elem.className = "fas fa-angle-double-right";
let array = [];
for (let i = 0; i < ul.children.length; i++) {
       let clone = elem.cloneNode(true);
       array.push(clone);
}
console.dir(array);
for (let i = 0; i < ul.children.length; i++) {
//    if (ul.children[i].nextElementSibling === null) {
//                    console.log(i);
//    } else {
                let clone = elem.cloneNode(false);
                ul.insertBefore(clone, ul.children[i].nextElementSibling);
//    }
}


При открытии страницы ничего не происходи просто крутиться и крутиться колёсико на вкладке и сама страница не отображается или частично отображается.

Буду рад любой наводке на решение.
  • Вопрос задан
  • 43 просмотра
Решения вопроса 2
orlov0562
@orlov0562
I'm cool!
Думаю, потому что у тебя ul.children.length постоянно увеличивается

так попробуй
console.dir(array);
let to = ul.children.length
for (let i = 0; i < to; i++) {
//    if (ul.children[i].nextElementSibling === null) {
//                    console.log(i);
//    } else {
                let clone = elem.cloneNode(false);
                ul.insertBefore(clone, ul.children[i].nextElementSibling);
//    }
}


вот тебе попроще пример
let t = [1,2,3];
for (let i=0; i<t.length; i++) {
  t.push(i);
  if (i>10) break;
}
console.log(t);
//  [1, 2, 3, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
Ответ написан
Stalker_RED
@Stalker_RED
for (let i = 0; i < ul.children.length; i++) {
    ul.insertBefore( ... );
}

Перебираете i пока не достигнете length, добавляете новые элементы, length увеличивается. До бесконечности.

Кроме того, вставляя i в ul вы ломаете разметку.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы