使用Javascript创建带有单循环的完整表结构Dynamicly

使用Javascript创建带有单循环的完整表结构Dynamicly,javascript,Javascript,我需要创建可以有多行的tabel。 我使用javascript在运行时创建表。 到现在为止,我们用了两个循环 exlTb = document.getElementById('exlTb'); tbl = document.createElement('table'); tbdy = document.createElement('tbody'); for(var i=0; i <= row; i++){ var tr=document.createElement('tr');

我需要创建可以有多行的tabel。 我使用javascript在运行时创建表。 到现在为止,我们用了两个循环

exlTb = document.getElementById('exlTb');
tbl = document.createElement('table');
tbdy = document.createElement('tbody');

for(var i=0; i <= row; i++){
    var tr=document.createElement('tr');
    for(var j = 0; j <= colomn; j++){
      var td = document.createElement('td'); 
      tr.appendChild(td);
      }
    tbdy.appendChild(tr);  
   }
 tbl.appendChild(tbdy);
 exlTb.appendChild(tbl);
exlTb=document.getElementById('exlTb');
tbl=document.createElement('table');
tbdy=document.createElement('tbody');

对于(var i=0;i如果您的目标是更快地创建表,那么所有往返DOM层的行程都是可以避免的。浏览器解析HTML的速度非常快。当以这种方式动态构建表时,通常最好创建标记,然后让浏览器一次解析并创建它,因为我们不会一直跨越JavaScript/DOM边界

这里有一个方法:

exlTb = document.getElementById('exlTb');
var markup = ['<table><tbody>'];

for(var i=0; i <= row; i++){
    markup.push('<tr>');
    for(var j = 0; j <= colomn; j++){
      markup.push('<td></td>');
      }
    markup.push('</tr>');
   }
markup.push('</tbody></table>');
exlTb.innerHTML = markup.join(""); // <== Note: Assumes exlTb is otherwise empty
exlTb=document.getElementById('exlTb');
var标记=[''];

对于(var i=0;i“…使用单循环…我正在尝试优化我的解决方案…”在什么方面使用两个循环比最优的少?优化方法?更快?更清晰?尝试一个模板系统,而不是用DOM方法构建表,很可能它们是罪魁祸首,而不是嵌套循环。是的,我想如果使用单循环可以做到这一点,那么它会更快。有趣的假设是…构建一辆车比n构建两辆自行车?这个推送和连接功能是否比append更快更好???@mayank:你的意思是比
createElement
/
appendChild
更快?通常是的。正如我上面所说:“像这样动态构建表时,通常最好先创建标记,然后让浏览器一次解析并创建所有标记,因为您不会一直跨越JavaScript/DOM边界。“当然,你会想用你的目标浏览器和真实的表格数据来测试它。Crowder:我已经在上面测试过了,但结果似乎不一样。使用append函数循环工作更快。检查这个链接@mayank:情况正在好转。:-)当年的标记方法要快得多。现在它可以取决于表的大小和大小,与Firefox相比,使用标记解决方案更令人高兴(Chrome仍然更喜欢DOM)。作为一个人,如果我们能够(很快?)放弃基于标记的更新,我将非常激动。。。