DocumentFragmentのポイントは、準備が整うまでDOMに触れることなくコンテンツを構築できることです。JavaScript:DocumentFragmentにノードをコピーする
DocumentFragmentがinnerHTML
をサポートしていないとすれば、ちょっと面倒なことがあります。一方、一度構築されると、断片自体によって既存のDOMノードにコンテンツを追加するのは簡単です。
div
をDOMに追加せずに作成した場合は、innerHTML
など、好きなように設定することができます。私が知る限り、パフォーマンスには何の影響もありません。
既存のDOMノードの内容をDocumentFragmentにコピーする簡単な方法(つまり1行程度)はありますか?プロセスは次のようになります。
var div=document.createElement('div');
var fragment=document.createDocumentFragment();
div.innerHTML='…';
// copy contents to fragment
// etc
このようにして、私は両方の世界で最高の結果を得ることができました。
ここで回答
を例に組み込ま以下@KevBotによって答えは:
var divTest=document.querySelector('div#test');
var html='<p>One</p><p>Two</p>';
var fragment=document.createRange().createContextualFragment(html);
divTest.appendChild(fragment);
私はこの質問が気に入っていますが、これらの解決策のいくつかはあいまいなJavaScriptを実装しています。 – zer00ne
* divにDOMを追加せずにdivを作成した場合、innerHTMLを含めて好きなように埋め込むことができます。 * divとdocFragの違いは、DOMにdivを追加すると、divに追加したすべてのものがそこに残ることです。 docFragを使用すると、それをDOMに追加します。追加したものはすべてDOMにありますが、docFragはDOMにありません。あなたはテーブルクロスを引き出してテーブルの上に置いておくと、そのテーブルクロスのトリックが好きです。 – zer00ne