我有一个JavaScript函数buildTable,它构建了一个非常长的HTML表。
function buildTable() {
for (var i = 0; i < rowCount; i++) {
.. code to create table
}
}
buildToolsetTable需要太多时间,几秒钟后IE 7会显示提示,如果我想继续运行脚本。我读到我可以使用window.setTimeout进行另一次调用并刷新执行但如果某人有实现,那么它将非常有帮助。
答案 0 :(得分:2)
你需要这样的东西,它将循环分解为一个单独的函数,为每次迭代调用:
(function(n) {
var i = 0;
function doWork() {
// do one row's worth of stuff here
...
if (++i < n) {
setTimeout(doWork, 0);
} else {
// do your tidy up here
...
}
}
doWork(); // start the first iteration
})(rowCount);
调用setTimeout()
将允许浏览器使用您自己的代码散布UI事件处理。
请参阅http://jsfiddle.net/alnitak/8wXTT/
为了增加乐趣,进行单次迭代并整理函数回调,这样就可以使这段代码独立,只需传递所需的参数。