JavaScript中使用createDocumentFragment方法避免頻繁重新整理頁面

來源:互聯網
上載者:User

先看這個例子:

<html><br /> <head><br /> <title>insertBefore() Example</title><br /> <script type="text/javascript"><!--<br /> function insertM<mce:script type="text/javascript" src="http://hi.images.csdn.net/js/blog/tiny_mce/themes/advanced/langs/zh.js" mce_src="http://hi.images.csdn.net/js/blog/tiny_mce/themes/advanced/langs/zh.js"></mce:script><mce:script type="text/javascript" src="http://hi.images.csdn.net/js/blog/tiny_mce/plugins/syntaxhl/langs/zh.js" mce_src="http://hi.images.csdn.net/js/blog/tiny_mce/plugins/syntaxhl/langs/zh.js"></mce:script>essage() {<br /> var oNewP = document.createElement("p");<br /> var oText = document.createTextNode("Hello Universe!");<br /> oNewP.appendChild(oText);<br /> var oOldP = document.getElementsByTagName("p")[0];<br /> document.body.insertBefore(oNewP, oOldP);<br /> }</p><p>// --></script><br /> </head><br /> <body onload="insertMessage()"><br /> <p>Hello World!</p><br /> </body><br /></html>

當需要向document添加大量資料時,整個過程將變得很緩慢,因為每次調用appendChild方法,頁面就會更新並反映這個變化。

解決的辦法是使用createDocumentFragment函數建立一個文檔片段,最後一次性添加到document中。

代碼如下:

<html><br /> <head><br /> <title>insertBefore() Example</title><br /> <script type="text/javascript"><!--<br /> function addMessages() {<br /> var arrText = ["first", "second", "third", "fourth", "fifth", "sixth", "seventh", "eighth", "ninth", "tenth"];</p><p> var oFragment = document.createDocumentFragment();</p><p> for (var i=0; i < arrText.length; i++) {<br /> var oP = document.createElement("p");<br /> var oText = document.createTextNode(arrText[i]);<br /> oP.appendChild(oText);<br /> oFragment.appendChild(oP);<br /> }</p><p> document.body.appendChild(oFragment);<br /> }</p><p>// --></script><br /> </head><br /> <body onload="addMessages()"><br /> </body><br /></html> 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.