Вставить два и более блока через insertBefore
С помощью метода insertBefore вставляю созданный блок div в нужное место, т.е. в родителя parentDiv ставлю newblock перед elem.
parentDiv.insertBefore(newblock, elem); Тут всё ясно, а вот как вставить рядом такой же newblock? Т.е. как-то можно выполнить такой же insertBefore ещё раз? |
Всё, понял, надо создать ещё один блок
|
А я не понял.)
Возможно тебе нужен document.createDocumentFragment(), чтоб одним insretBefore вставить несколько элементов, а может быть тебе нужен Element.cloneNode(true), чтобы склонировать один элемент несколько раз... |
Тогда я тоже не понял.
Хочу сделать вот что - нужно создать блок, и вставить его в определённое место несколько раз, количество раз рассчитывается отдельно. Собственно, придумал делать это в цикле. n - рассчитывается ранее for (var i=1; i<=n; i++) { var newblock[i] = document.createElement('div'); newblock[i].className = "class"; newblock[i].innerHTML = "Текст блока [i]"; parentDiv.insertBefore(newblock[i], elem); } |
Всё в принципе верно(кроме "var newblock[i]", но думаю тут просто опечатка, ибо оно просто не стало бы работать).
А так, с помощью фрагмента возможна микрооптимизация: var fragment = document.createDocumentFragment(); for (var i=0; i<n; i++) { var newblock = document.createElement('div'); newblock.className = "class"; newblock.innerHTML = "Текст блока [i]"; fragment.appendChild(newblock); } parentDiv.insertBefore(fragment, elem); Если же элементы вообще одинаковые, то тут пригодится клон: var newblock = document.createElement('div'); newblock.className = "class"; newblock.innerHTML = "Текст блока"; var fragment = document.createDocumentFragment(); while(n--) fragment.appendChild(newblock.cloneNode(true)); parentDiv.insertBefore(fragment, elem); |
Я бы сгенерил html-текст и вштырил бы его единовременно куда сказано via innerHTML=
Живые элементы интересно создавать в рамках задачи управления ими, а если никаких рамок, зачем они нужны. |
warren buffet, тогда уж через insertAdjacentHTML.)
|
Да, этим методом, могучая вещь. ТС, посмотри его в мануале, там 4 опции - до, первым, последним и после.
|
Спаисбо, с этим разобрался.
А что, если мне нужны разные блоки? var n=2; for (var i=0; i<n; i++) { var newblock = document.createElement('div'); newblock.className = "class"; newblock.innerHTML = "Текст блока"; parentDiv.insertBefore(newblock, elem); } newblock1 и newblock2 |
Я еще тогда подумал откуда контент-то брать. Ну и откуда?
|
Часовой пояс GMT +3, время: 10:11. |