首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

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

2012-11-15 
转:使用Javascript动态创建表格,不同的方法,巨大的运行时间差异原文链接:http://abaper.blogbus.com/logs/

转:使用Javascript动态创建表格,不同的方法,巨大的运行时间差异
原文链接:http://abaper.blogbus.com/logs/8278500.html

本来是想测试一下使用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> 

热点排行