2010-11-03 3 views
0

Я создал фрагмент DOM, где я добавляю несколько ChildNodes в цикле:Javascript добавить фрагмент к существующему HTML элементу

fragment.appendChild(clone) 

Я хочу взять этот фрагмент и использовать его, чтобы заменить существующий HTML-элемент, который уже содержат эти узлы.

я могу использовать

myContainer.appendChild(fragment) 

Однако это делается также в цикле и фрагмент добавляется слишком много раз. Как я могу получить фрагмент, добавить его в myContainer и удалить также старые дочерние объекты myContainer.

спасибо.

ответ

0

Не можете ли вы добавить фрагмент после завершения цикла?

Что касается удаления текущих дочерних узлов, вы можете пропустить их все и использовать функцию removeChild, иначе вы можете просто установить innerHTML элемента в пустую строку. Если вы перезагрузите innerHTML перед добавлением фрагмента, все должно быть хорошо.

myContainer.innerHTML = ""; 
myContainer.appendChild(fragment); 
1

Вы, вероятно, хотите:

while (myContainer.childNodes.length > 0) { 
    myContainer.removeChild(myContainer.childNodes[0]); 
} 

myContainer.appendChild(fragment); 
0

Если я вас правильно понял, вы создаете новый узел с некоторыми детьми, и вы хотите, этот новый узел, чтобы заменить существующий узел на вашей странице.

Вы можете:

  • Удалить все дети существующего узла и добавления новых детей к существующему узлу
  • Добавить все дети в другой узел (я думаю, что это то, что вы делаете : добавление к fragment), затем удалить существующий узел и добавить узел в это место.

См removeChild и appendChild

+0

myContainer.replaceChild (фрагмент, myOldElement) работает только для одного ребенка. В моем фрагменте и myOldElement у меня есть несколько дочерних узлов. Я ищу способ использовать replaceChild() для замены нескольких дочерних элементов другими элементами одновременно ... не только один – Mircea

+0

@Mircea, вы говорите, что хотите что-то вроде «replaceChild», который работает на массивах, например? Боюсь, что их нет. Вы должны были бы вызвать это в цикле. – Nivas

+0

да что-то вроде replaceChild, которое может работать не только для одного ребенка, но и для коллекции childs. – Mircea

Смежные вопросы