最新评论
楼主的测试方法对方法2不公平吧,这么次的append,最好用documentFragment来做。
下面是我优化过的代码,测试表明DOM比innerHTML快点
test1:10 test2:7
其中test1使用+=操作的话(即不优化)只需要9
------------------------
function test2()
{
var d = new Date();
var tmp = document.createElement('div');
for (var n = 0; n < 1000; n ++)
{
var e = document.createElement('a');
e.href = '';
e.innerText = n;
tmp.appendChild(e);
}
div2.appendChild(tmp);
t2.value = '耗时:' + (new Date() - d);
}
我遇到的情况。本来在一个div里面有个input(text)里面把值填好了,然后用innerHTML+=,这些值就没了。用createElement就没问题
Re:JAVA日期处理(一)[转贴] 阿拉木图 2009-07-30 13:43
请问版主:这个程序有没有编译好的?
最后结论:
innerHTML= 或 innerHTML+=
这个非常耗时,不要放到大循环里,无论ie还是FF。
最好形成整个字符串后再innerHTML=str
如果大循环(或嵌套函数)里必须放,那么用createElement.
楼主说的也不对,不同的浏览器结果不一样。
var str="";
for (var n = 0; n < 1000; n ++)
{
str+='<div>';
str+=n;
str+='</div>';
}
div1.innerHTML = str;
在firefox里是非常快的,尽管有许多次的+=。
但在ie里很慢,也许是ie的+=比较耗时。
太感谢了,
找了一下午,终于在你这找到了。
mode: 'remote', // 必须
谢谢!
如果只是为了显示,不对其中的元素做任何处理和事件的话自然是用innerHTML比较好。但是对其中的元素添加事件等其他处理的话还是createElement来的比较方便。两种方法只是用在不同的场景下,根据自己的需要来选择了。而实际的开发过程中也很少会遇到由于他们之间的性能差距而影响显示速度的情况。
摘自ajax in action:
"Even if it isn’t a standard DOM property, innerHTML is orders of magnitude faster than the standard methods for manipulating the DOM tree"
innerHTML 比标准的操作DOM树的方法快很多
@innerHTML
呵呵,我没有从网上看到有您说的“一直以来都是说使用innerHTML的速度较DOM操作来得快的”,我下面再搜一下,呵呵,顺便把标题改了。
一直以来都是说使用innerHTML的速度较DOM操作来得快的。
IE 和 FF里面对 innerHTML的处理速度也不一样
不过都用innerHTML来处理各种表现形式的话 会影响开发效率和维护成本
毕竟当需要动态添加事件和自定义属性的时候降低了可读性。
虽然不懂,但觉得留心这些细节会很有用;当有多个解决方案需要选择时,寻找最佳实现方式,而不是不论过程、性能仅仅为了完成效果。支持一下,静听高人们讲解:)