javascript - 在 JavaScript 中使用来自 JSON 的数据动态填充表的快速方法

标签 javascript jquery html json dom

我正在试验 jQuery、JSON 等,遇到了以下任务。我在服务器上有一个加载程序脚本,它以 JSON 格式返回表数据。收到 JSON 数据后,我想用它们填充我的表。我目前正在使用类似于以下的代码(有更多的列和一些更高级的处理,但你明白了):

...
for (var key=0, size=data.length; key<size;key++) {

  $('<tr>')
            .append( $('<td>').html(
                data[key][0]
            ) )
            .append( $('<td>').addClass('whatever1').html(
                data[key][1]
            ) )
            .append( $('<td>').addClass('whatever2').html(
                data[key][2]
            ) )
            .appendTo('#dataTable');
}
...

<table id="#dataTable"></table>
...

这很好用。但是一旦数据增长,它就会变得非常慢。对于很少的记录,构建表格最多需要大约 5 秒(Firefox、IE),这有点慢。如果我例如在服务器上创建整个 HTML 并将其作为字符串发送,我将其包含在表中,这将非常快。

那么,有没有更快的填表方式呢?

注意:我知道什么是分页,我会在最后使用它,所以请不要说“你的页面上需要这么大的表格做什么?”。这个问题是关于如何快速填充表格,无论您将显示多少条记录:)

最佳答案

参见 my response到使用数组和“连接”的早期类似查询。

直到最后才调用 jQuery,也就是只调用一次。此外,通过将字符串存储在数组中并使用“join”方法一次性构建字符串,也可以消除字符串连接。

例如

 var r = new Array(), j = -1;
 for (var key=0, size=data.length; key<size; key++){
     r[++j] ='<tr><td>';
     r[++j] = data[key][0];
     r[++j] = '</td><td class="whatever1">';
     r[++j] = data[key][1];
     r[++j] = '</td><td class="whatever2">';
     r[++j] = data[key][2];
     r[++j] = '</td></tr>';
 }
 $('#dataTable').html(r.join('')); 

关于javascript - 在 JavaScript 中使用来自 JSON 的数据动态填充表的快速方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5361810/

相关文章:

javascript - 按 T​​AB 键在相同/不同页面上显示文本框值

php - 使用 PHP 将文本添加到图像(gif 动画)

html - Safari 上的页脚随内容滚动,但在 Chrome 上则不会

javascript - 查找标签之间的特定值

javascript - 如何为html类添加事件监听器?

javascript - 在 IWebBrowser2 中加载 jQuery 时出现脚本错误

javascript - Skrollr:如何根据滚动方向对关键帧进行不同的动画处理?

javascript - 如何区分内联链接和独立链接

html - 在容器末尾淡出链接

javascript - 为什么我看到 javascript 数组是用 string.split() 创建的?