Я читал в Интернете, чтобы предотвратить частые переплавки, и изменяя DOM каждый раз, когда мы можем использовать фрагменты документа. Поэтому я принял этот подход, и я захотел заполнить 2 с одним и тем же контентом (они на самом деле содержат годы с 1990-2013 гг.).Документ Фрагмент теряет содержимое после innerHTML
var fragment = document.createDocumentFragment();
for(var i=1;i<=10;i++){
var choice = document.createElement('option');
choice.value = i;
choice.innerHTML = i;
fragment.appendChild(choice);
}
$('#list').html(fragment); //Populates #list with values 1-10
Это работает хорошо, но, когда я иду, чтобы заполнить свой 2--е выпадающий с тем же значениями, фрагмент в настоящее время не имеет какое-либо содержание
$('#list2').html(fragment); // Does not populate #list2
Demo JSFiddle: Here
Я попробовал альтернативный подход, который работает, то, что я хочу знать, - это то, как и почему фрагмент документа теряется после innerHTML()?
Так работает 'appendChild()'. Он перемещает добавленный элемент, а не копирует его. Вам нужно клонировать или воссоздавать элемент перед добавлением. – Teemu
, но если я создаю var = "sample" и сделаю innerHTML в 3 элементах DOM, он сохранит содержимое. –
Вы можете попробовать использовать 'cloneNode()' каждый раз, когда вы добавляете фрагмент в DOM. Поэтому вместо добавления самого фрагмента вы добавляете клон из него. –