zoukankan      html  css  js  c++  java
  • JS动态创建表格比较【转】

    目标:生成一个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();
            for (var j = 0; j < 5; j++) {
             var c = r.insertCell();
             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>

  • 相关阅读:
    Android UI法宝的设计资源的开发
    Ural 1309 Dispute (递归)
    ZOJ3827 ACM-ICPC 2014 亚洲区域赛的比赛现场牡丹江I称号 Information Entropy 水的问题
    myeclipse如何恢复已删除的文件和代码
    在C#主线程和子线程将数据传递给对方如何实现
    SSh框架结构(Struts2.1+Hibernate4.0+Spring3.1)
    基于大数据分析的安全管理平台技术研究及应用【摘录】
    ulimit -t 引起的kill血案
    Oracle RAC 环境下的连接管理
    SMTP协议--在cmd下利用命令行发送邮件
  • 原文地址:https://www.cnblogs.com/myssh/p/1433035.html
Copyright © 2011-2022 走看看