最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

JavascriptcreateElement和innerHTML增加页面元素的性能对比_javascript技巧

来源:动视网 责编:小采 时间:2020-11-27 20:44:20
文档

JavascriptcreateElement和innerHTML增加页面元素的性能对比_javascript技巧

JavascriptcreateElement和innerHTML增加页面元素的性能对比_javascript技巧:最近遇到js的效率问题,是关于在页面中新增元素的问题。 假设我们有页面如下: 代码如下: // 脚本位置 现在,我们要往div1中添加对象,大家都知道在为web页面增加一个元素时可以使用如下代码: //方法1 div1.innerHTML = '测试';
推荐度:
导读JavascriptcreateElement和innerHTML增加页面元素的性能对比_javascript技巧:最近遇到js的效率问题,是关于在页面中新增元素的问题。 假设我们有页面如下: 代码如下: // 脚本位置 现在,我们要往div1中添加对象,大家都知道在为web页面增加一个元素时可以使用如下代码: //方法1 div1.innerHTML = '测试';


最近遇到js的效率问题,是关于在页面中新增元素的问题。
假设我们有页面如下:
代码如下:







// 脚本位置



现在,我们要往div1中添加对象,大家都知道在为web页面增加一个元素时可以使用如下代码:
//方法1
div1.innerHTML = '测试';
或者:
//方法2
var a = document.createElement('a');
a.innertText = '测试';
div1.appendChild(a);
在网上搜索到一个探讨js效率问题的文章,其大概意思是说方法2的效率高,其对比代码如下:
代码如下:
// 方法1
function init(){
var staDate = new Date();
var doc = window.document;
for(var i=0;i<100;i++){
var str="test";
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);
}

其页面中有:


从执行效果来看方案2要比方案1快10倍左右,到底这是不是真的呢?其实上面的测试代码是有待商榷的,且看其方法1中的循环代码:
代码如下:
for(var i=0;i<100;i++){
var str="test";
container.innerHTML += str;
}

其中有很多字符串操作,而且除了使用+号来连接字符串外,还使用了+=操作符,这就是问题的所在了,在javascript中这种操作字符串的做法是严重影响效率的,所以使用上面的方法来测试createEmenent和innerHTML的效率对innerHTML是不公平的, 据此看来很可能是字符串操作吃掉了innerHTML的性能,于是写了下面的测试代码:

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
经测试发现:
1、在创建的对象较少(0-大约10左右)时,innerHTML和createElement效率差不多,测试值悠忽不定;
2、在创建对象多于20时,innerHTML要比createElement效率高很多,平均测试差不多createElement耗时是innerHTML的两倍。
总结:其实效率也在于编写的代码,在知道可用的API的效率后,怎么编写代码也是非常重要的,否则应由的执行效率不能体现出来,就如上面从网上搜到的那些代码,得出一个与事实相悖的结论。

文档

JavascriptcreateElement和innerHTML增加页面元素的性能对比_javascript技巧

JavascriptcreateElement和innerHTML增加页面元素的性能对比_javascript技巧:最近遇到js的效率问题,是关于在页面中新增元素的问题。 假设我们有页面如下: 代码如下: // 脚本位置 现在,我们要往div1中添加对象,大家都知道在为web页面增加一个元素时可以使用如下代码: //方法1 div1.innerHTML = '测试';
推荐度:
标签: 元素 html javascript
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top