2016-06-28 45 views
-1

我目前正在生成一个表使用jQuery通过追加行等到表,然后返回它。有什么方法可以显示表格吗?因此,它基本上是随着它的发展而变化,并用它来展示进步。显示表生成?

ui.generate_tabs('content-tabs', content_container, domain_list, function(domain_id) { 
       var table = jQuery('<table><thead><th>Backbone</th><th>Sequence</th></thead></table>'); 
       var tbody = jQuery('<tbody/>'); 
       table.append(tbody); 

       var show_table = function(table) { 
        console.log(table); 
        return table; 
       } 

       for (let aacid of utils.map_iterkeys(aacid_str)) { 
         var tr = jQuery('<tr/>'); 
         tbody.append(tr); 
         tr.append(jQuery('<td/>').text(aacid)); 
         tr.append(jQuery('<td class="single-line-td"><code>' + aacid_str[aacid] + '</code></td>')); 
         show_table(table); 
       }; 

       // // Job done 
       progress_indicator.remove(); 
       return table; 
+0

显示您的努力。这不是一个源文件服务。或谷歌有点难;那里有很多例子。 –

+0

你能显示你的代码吗?在将它插入DOM之前,您是否完全生成表格?确保您逐步将每行添加到DOM。 – Eytibi

+0

除非您在每行出现之前有目的地设置延迟,否则它们会在人眼能够掌握之前显示出来。 –

回答

0

您必须使用本机setTimeout()函数或jQuery .delay()方法来让浏览器处理DOM呈现。

而不是做的:

for(var n = 0; n < N_ROW; n++) { 
    appendRow(n); 
} 

你会怎么做:

var n = 0, 
    iter; 

(iter = function() { 
    if(n < N_ROW) { 
    appendRow(n++); 
    setTimeout(iter, DELAY); 
    } 
})(); 

在哪里 '延迟' 以毫秒为单位表示,可以是0或者其他任意值。请注意,即使在DELAY = 0的情况下,该流程可能比“标准方式”需要更多的时间。

编辑: 与其他人一样注意到了,它可能没有多大意义,除非你打算慢下来的目的(有,比方说,DELAY = 500),以向用户示出“嘿,看!我正在添加新的行!'

0

谢谢你的想法。我意识到另一种方法,这基本上是我立即返回表(空),因为我用来生成行的数据正在远程获取,随着数据的进入,我将行添加到表中,因此它们添加了它们进来,显示它是“进步”。在我的问题中,我没有明确表示行的生成更依赖于实际数据获取的速度,这就是为什么我希望它逐步显示的原因。

谢谢大家!