概念
DocumentFragment 接口表示文檔的一部分(或一段)。更確切地說,它表示一個或多個鄰接的Document 節點和它們的所有子孫節點。
DocumentFragment 節點不屬于文檔樹,繼承的 parentNode 屬性總是 null。
不過它有一種特殊的行為,該行為使得它非常有用,即當請求把一個 DocumentFragment 節點插入文檔樹時,插入的不是 DocumentFragment 自身,而是它的所有子孫節點。這使得 DocumentFragment 成了有用的占位符,暫時存放那些一次插入文檔的節點。它還有利于實現文檔的剪切、復制和粘貼操作
說明
我們知道每執行一次DOM操作都會導致頁面的重繪和重新排版,比如當進行循環批量插入節點時,每一次插入就會刷新一次DOM樹,嚴重影響頁面性能。
這時候我們可以選擇使用DocumentFragment來臨時保存要插入的所有節點,循環完成后再插入到主文檔里邊,這樣就只需要修改一次DOM樹。
代碼
var fragment = document.createDocumentFragment();
for (let i = 0;i<10;i++){
let node = document.createElement("p");
node.innerHTML = i;
fragment.appendChild(node);
}
document.body.appendChild(fragment);