【发布时间】:2014-01-05 04:31:38
【问题描述】:
我正在尝试在 IE 9 中使用以下代码在单击按钮时创建一个大表。
$(document).ready(function() {
$("#generateTable").click(function() {
generateTable1();
});
});
function generateTable() {
$('#sampletable').html("");
try {
var content = "<table border=1>"
for (j = 0; j < 360; j++) {
content += '<tr>';
for (i = 0; i < 3000; i++) {
content += '<td>' + j + '</td>';
}
content += '</tr>';
}
content += "</table>"
$('#sampletable').html(content);
} catch (err) {
alert(err);
}
}
正如预期的那样,IE 在创建此表时被阻塞/挂起。所以我想使用 JavaScript asyn 模式异步创建这个表(我猜是使用 settimeout 方法在卡盘中构建表......)。
如何使这个 generateTable() 调用异步?
【问题讨论】:
-
可能值得尝试使用
document.createElement而不是字符串来生成表。它可能会表现得更好。代码仍然会生成超过一百万个td元素,我真的不明白你为什么需要它。 -
几个问题: 1) 你总是知道桌子的尺寸吗?如果是这样,为什么不静态生成呢? 2)桌子是做什么用的? 3)只有IE 9有这个问题吗?其他浏览器会展示它吗? 4) 你的 HTML 是什么样的?
-
@GEORGESTOCKET 是的,我会知道桌子的大小。我无法静态生成它,因为我必须在绘制每个单元格时评估几件事。此外,我从服务器获取表的数据作为 2D 数组。
标签: javascript performance asynchronous settimeout