有没有办法在Javascript函数结束之前修改和更新文档?例如(不是我实际上做的,但足够接近):
function longloop(){
for(var i=0;i<100;i++){
x = someLengthyFunction();
document.getElementById('aTable').innerHTML+='<tr><td>' + x + '</td></tr>';
}
}
按下按钮调用该函数,我想在循环进行时更新表。我在那里只会在循环结束时显示更新的表格。
答案 0 :(得分:3)
不,这是不可能的。
您需要做的是将部分循环拆分,并在更新文档后使用window.setTimeout
继续下一部分。
示例:
function longloop(){
function work(i) {
x = someLengthyFunction();
document.getElementById('aTable').innerHTML+='<tr><td>' + x + '</td></tr>';
i++;
if (i < 100) window.setTimeout(function(){ work(i); }, 0);
}
work(0);
}
答案 1 :(得分:1)
这绝对是web workers的工作。您可以将上述脚本作为工作程序运行,该工作程序会定期传递消息以更新您的内容。但由于只有非常现代的浏览器才能利用Web工作者,并且JavaScript不是一种线程语言,因此您可能必须非常有创造性地编写该循环才能完成此任务。