NickFitz прав, DocumentFragment
не имеет API, который вы ожидаете от Document
или Element
, в стандарте или в браузерах (что обидно; было бы очень удобно иметь возможность установить Фрагменты innerHTML
.
Даже фреймворки здесь не помогают, так как они, как правило, требуют, чтобы узлы были в документе, или иным образом используют методы на узле контекста, которые не существуют во фрагментах. Вы, вероятно, должны написать свой собственный, например.
function Node_getElementById(node, id) {
for (var i= 0; i<node.childNodes.length; i++) {
var child= node.childNodes[i];
if (child.nodeType!==1) // ELEMENT_NODE
continue;
if (child.id===id)
return child;
child= Node_getElementById(child, id);
if (child!==null)
return child;
}
return null;
}
Почти наверняка было бы лучше отслеживать ссылки во время работы, чем полагаться на наивную, плохо работающую функцию, подобную приведенной выше.
var frag= document.createDocumentFragment();
var mydiv= document.createElement("div");
mydiv.id= 'myId';
frag.appendChild(mydiv);
// keep reference to mydiv