使用Javascript动态创建表格,不同的方法,巨大的运行时间差异!

作者: jaclon 分类: JS 发布时间: 2011-06-04 01:37 ė 6没有评论

本来是想测试一下使用Javascript生成一个比较大的表格,大概需要多长时间,一直认为这会是一个比较固定的时间。期间用了几种不同的方法,发现效率相差太大了。下面是测试的具体说明:

目标:生成一个2000*5的表格,每个单元格的内容是行号+逗号+列号

方法一:使用createElement生成表格,使用insertRow和insertCell方法生成行列,单元格的内容使用innerHTML属性进行填充。

方法二:使用createElement生成表格,使用CreateElement方法生成行列,单元格的内容使用了createTextNode方法填充。

方法三:拼接表格innerHTML属性的字符串,使用字符串 += 操作符链接字符串

方法四:拼接表格innerHTML属性的字符串,各个字符串追加数组里面,最后调用数组的join方法生成目标字符串。

运行时间比较:

方法 运行时间(ms)
方法一 93037
方法二 3341
方法三 2795
方法四 500

具体的程序如下:

 <html>
 <head>
 <title>test page</title>
 <script type='text/javascript'>
 <!--
 function createTable() {
 var t = document.createElement('table');
 for (var i = 0; i < 2000; i++) {
 var r = t.insertRow(0);
 for (var j = 0; j < 5; j++) {
 var c = r.insertCell(0);
 c.innerHTML = i + ',' + j;
 }
 }
 
 document.getElementById('table1').appendChild(t);
 t.setAttribute('border', '1');
 }
 
 function createTable2() {
 var t = document.createElement('table');
 var b = document.createElement('tbody');
 for (var i = 0; i < 2000; i++) {
 var r = document.createElement('tr');
 for (var j = 0; j < 5; j++) {
 var c = document.createElement('td');
 var m = document.createTextNode(i + ',' + j);
 c.appendChild(m);
 r.appendChild(c);
 }
 b.appendChild(r);
 }
 
 t.appendChild(b);
 document.getElementById('table1').appendChild(t);
 t.setAttribute('border', '1');
 }
 
 function createTable3() {
 var data = '';
 
 data += '<table border=1><tbody>';
 for (var i = 0; i < 2000; i++) {
 data += '<tr>';
 for (var j = 0; j < 5; j++) {
 data += '<td>' + i + ',' + j + '</td>';
 }
 data += '</tr>';
 }
 data += '</tbody><table>';
 
 document.getElementById('table1').innerHTML = data;
 } 
function createTable4() {
 var data = new Array();
 
 data.push('<table border=1><tbody>');
 for (var i = 0; i < 2000; i++) {
 data.push('<tr>');
 for (var j = 0; j < 5; j++) {
 data.push('<td>' + i + ',' + j + '</td>');
 }
 data.push('</tr>');
 }
 data.push('</tbody><table>');
 
 document.getElementById('table1').innerHTML = data.join('');
 }
 
function showFunctionRunTime(f) {
 var t1 = new Date();
 f();
 var t2 = new Date();
 alert(t2 - t1);
 }
 //-->
 </script>
 </head>
 <body>
 <div id="table1" style="border: 1px solid black">
 </div>
 
<script>
 showFunctionRunTime(createTable);
 showFunctionRunTime(createTable2);
 showFunctionRunTime(createTable3);
 showFunctionRunTime(createTable4);
 </script>
 </body>
</html>

本文出自 肥蕉博客@IT技术,热门话题,生活随笔,美图欣赏,转载时请注明出处及相应链接。

本文永久链接: http://www.bananawolf.com/html/2011/06/535.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*

Ɣ回顶部