js常見的創(chuàng)建dom節(jié)點(diǎn)的方法有
createElement() 創(chuàng)建一個(gè)元素節(jié)點(diǎn) => 接收參數(shù)為string類型的nodename
createTextNode() 創(chuàng)建一個(gè)文本節(jié)點(diǎn) => 接收參數(shù)為string類型的text內(nèi)容
createAttribute() 創(chuàng)建一個(gè)屬性節(jié)點(diǎn) => 接收參數(shù)為string類型的屬性名稱
createComment() 創(chuàng)建一個(gè)注釋節(jié)點(diǎn) => 接收參數(shù)為string類型的注釋文本
createDocumentFragment()方法,則是用了創(chuàng)建一個(gè)虛擬的節(jié)點(diǎn)對(duì)象,或者說(shuō),是用來(lái)創(chuàng)建文檔碎片節(jié)點(diǎn)。它可以包含各種類型的節(jié)點(diǎn),在創(chuàng)建之初是空的。
DocumentFragment節(jié)點(diǎn)不屬于文檔樹,繼承的parentNode屬性總是null。它有一個(gè)很實(shí)用的特點(diǎn),當(dāng)請(qǐng)求把一個(gè)DocumentFragment節(jié)點(diǎn)插入文檔樹時(shí),插入的不是DocumentFragment自身,而是它的所有子孫節(jié)點(diǎn)。這個(gè)特性使得DocumentFragment成了占位符,暫時(shí)存放那些一次插入文檔的節(jié)點(diǎn)。它還有利于實(shí)現(xiàn)文檔的剪切、復(fù)制和粘貼操作。
另外,當(dāng)需要添加多個(gè)dom元素時(shí),如果先將這些元素添加到DocumentFragment中,再統(tǒng)一將DocumentFragment添加到頁(yè)面,會(huì)減少頁(yè)面渲染dom的次數(shù),效率會(huì)明顯提升。
還有一個(gè)很重要的特性是,如果使用appendChid方法將原dom樹中的節(jié)點(diǎn)添加到DocumentFragment中時(shí),會(huì)刪除原來(lái)的節(jié)點(diǎn)。