亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Javascript createElement和innerHTML增加頁面元素的性能對比

 更新時間:2009年09月17日 20:59:05   作者:  
Javascript之createElement和innerHTML增加頁面元素的性能對比
最近遇到js的效率問題,是關于在頁面中新增元素的問題。
假設我們有頁面如下:
復制代碼 代碼如下:

<HTML>
<HEAD>
</HEAD>
<BODY>
<div id="div1"></div>
</BODY>
<script>
// 腳本位置
</script>
</HTML>

現(xiàn)在,我們要往div1中添加對象,大家都知道在為web頁面增加一個元素時可以使用如下代碼:
//方法1
div1.innerHTML = '<a href="">測試</a>';
或者:
//方法2
var a = document.createElement('a');
a.innertText = '測試';
div1.appendChild(a);
在網(wǎng)上搜索到一個探討js效率問題的文章,其大概意思是說方法2的效率高,其對比代碼如下:
復制代碼 代碼如下:

// 方法1
function init(){
var staDate = new Date();
var doc = window.document;
for(var i=0;i<100;i++){
var str="<div id='div_'"+i+"' style='width:100px; height:20px;background-color:#eee'>test</div>";
container.innerHTML += str;
}
alert(new Date - staDate);
}
//方法2
function init(){
var staDate = new Date();
var doc = window.document;
for(var i=0;i<100;i++){
var oDiv = doc.createElement("div");
var oText = doc.createTextNode("text");
oDiv.appendChild(oText);
container.appendChild(oDiv);
oDiv.style.id = "div_"+i;
oDiv.style.width = "100px";
oDiv.style.height = "20px";
oDiv.style.backgroundColor = "#eee";
}
alert(new Date - staDate);
}

其頁面中有:
<div id="container"></div>
<input type="button" value="start" onclick="init();" />
從執(zhí)行效果來看方案2要比方案1快10倍左右,到底這是不是真的呢?其實上面的測試代碼是有待商榷的,且看其方法1中的循環(huán)代碼:
復制代碼 代碼如下:

for(var i=0;i<100;i++){
var str="<div id='div_'"+i+"' style='width:100px; height:20px;background-color:#eee'>test</div>";
container.innerHTML += str;
}

其中有很多字符串操作,而且除了使用+號來連接字符串外,還使用了+=操作符,這就是問題的所在了,在javascript中這種操作字符串的做法是嚴重影響效率的,所以使用上面的方法來測試createEmenent和innerHTML的效率對innerHTML是不公平的, 據(jù)此看來很可能是字符串操作吃掉了innerHTML的性能,于是寫了下面的測試代碼:

[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]

經(jīng)測試發(fā)現(xiàn):
1、在創(chuàng)建的對象較少(0-大約10左右)時,innerHTML和createElement效率差不多,測試值悠忽不定;
2、在創(chuàng)建對象多于20時,innerHTML要比createElement效率高很多,平均測試差不多createElement耗時是innerHTML的兩倍。
總結:其實效率也在于編寫的代碼,在知道可用的API的效率后,怎么編寫代碼也是非常重要的,否則應由的執(zhí)行效率不能體現(xiàn)出來,就如上面從網(wǎng)上搜到的那些代碼,得出一個與事實相悖的結論。

相關文章

  • 一篇搞懂Vue2、Vue3響應式源碼的原理

    一篇搞懂Vue2、Vue3響應式源碼的原理

    這篇文章主要介紹了Vue2、Vue3響應式源碼的原理,內(nèi)容很詳細,對大家的學習或者工作具有一定的參考學習價值,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2023-01-01
  • uniapp小程序點擊輸入框時阻止彈出軟鍵盤的幾種解決方案

    uniapp小程序點擊輸入框時阻止彈出軟鍵盤的幾種解決方案

    在寫項目時候需要在表單里面加一個picker選擇器,但選擇input的時候軟鍵盤與選擇器會同時彈出,下面這篇文章主要給大家介紹了關于uniapp小程序點擊輸入框時阻止彈出軟鍵盤的幾種解決方案,需要的朋友可以參考下
    2024-02-02
  • canvas實現(xiàn)圖像布局填充功能

    canvas實現(xiàn)圖像布局填充功能

    這篇文章主要為大家詳細介紹了canvas實現(xiàn)圖像布局填充功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • 在Html中使用Requirejs進行模塊化開發(fā)實例詳解

    在Html中使用Requirejs進行模塊化開發(fā)實例詳解

    在前端模塊化的時候,不僅僅是js需要進行模塊化管理,html有時候也需要模塊化管理。這里就介紹下如何通過requirejs,實現(xiàn)html代碼的模塊化開發(fā)
    2016-04-04
  • JavaScript如何將時間戳轉化為年月日時分秒格式

    JavaScript如何將時間戳轉化為年月日時分秒格式

    這篇文章主要給大家介紹了關于JavaScript如何將時間戳轉化為年月日時分秒格式的相關資料,在前端的日常工作當中,時間戳的使用也是不少的,有時后端返回給我們的數(shù)據(jù)是一個時間戳,我們需要轉換成年月日,時分秒的形式展示在頁面當中,需要的朋友可以參考下
    2023-11-11
  • 原生JS實現(xiàn)隨機點名項目的實例代碼

    原生JS實現(xiàn)隨機點名項目的實例代碼

    這篇文章主要介紹了原生JS實現(xiàn)隨機點名項目的實例代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧
    2019-04-04
  • 動態(tài)加載JS文件的三種方法

    動態(tài)加載JS文件的三種方法

    動態(tài)加載JS文件的三種方法
    2013-11-11
  • 微信小程序實現(xiàn)同時上傳多張圖片

    微信小程序實現(xiàn)同時上傳多張圖片

    這篇文章主要為大家詳細介紹了微信小程序實現(xiàn)同時上傳多張圖片,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • javascript DOM 操作基礎知識小結

    javascript DOM 操作基礎知識小結

    經(jīng)常用到javascript對dom,喜歡這方便的朋友也很多,要想更好的對dom進行操作,這些基礎一定要知道的。
    2010-04-04
  • javascript 繼承實現(xiàn)方法

    javascript 繼承實現(xiàn)方法

    javascript的繼承機制并不是明確規(guī)定的,而是通過模仿實現(xiàn)的,意味著繼承不是由解釋程序處理,開發(fā)者有權決定最適合的繼承方式.
    2009-08-08

最新評論