【发布时间】:2012-02-02 19:43:36
【问题描述】:
我有一个来自服务器的 JSON 数组,其中包含 200 个对象的数组,每个对象包含另外 10 个我想以表格格式显示的对象。起初,我为每次迭代创建一个<tr>,并使用jQuery 将一个从数组值构建的<td> 附加到<tr>。这在 Chrome 中大约需要 30 秒,在 IE 8 中大约需要 19 秒。这花费的时间太长,所以我尝试切换到 Array.join() 方法,在该方法中,我将构成整个表的每个字符串存储在一个数组中,并在最后做$('#myTable').append(textToAppend)。这实际上比我的第一个版本差了大约 5 秒。
我希望将其缩短到 10 秒左右。我有机会吗?如果没有,我只会一次添加一行,但我不想那样做。
for(allIndex = 0; allIndex < entries.alumnus.length; allIndex++){
var entry = '<tr id="entry' + allIndex + '" class="entry"></tr>';
$('#content_table').append(entry);
$('#entry' + allIndex).append(($.trim(entries.alumnus[allIndex].title) != '' ?
'<td id="title' + allIndex + '" class="cell"><span class="content">' +
entries.alumnus[allIndex].title + '</span></td>' : '<td width="5%">' +
filler + '</td>'));
.
.
.
.//REST OF ELEMENTS
.
.
.
}
更新:我昨天一定搞砸了,因为我回去尝试从 DOM 中附加元素,然后稍后附加它们,而不使用 jQuery,我已经把时间花在了Chrome 为 85 毫秒,IE7 为 450 毫秒!!!你们真棒!!!我给了 user1 答案,因为那个更全面,并且在 Chrome 中使用片段并没有真正改变我的时间,在 IE7 中增加了大约 20 毫秒。但我仍然很欣赏@Emre Erkan 的回答,并且会更频繁地使用:)
【问题讨论】:
-
你的意思是你有一个 JSON 数组,里面有 200 个元素,每个元素都是 10 个元素的数组?
-
是的,我把我的术语弄错了:)
-
你能贴一些代码吗?你只是在使用字符串,还是在 DOM 之外构建元素,然后将其添加进去?
-
200x10 表格需要 15 秒才能在 Chrome 中生成?不错..
标签: javascript jquery string performance concatenation