1

我有一个很长的 javascript 脚本。问题是在它的中间我想改变一个 div 的 innerHtml 说“快完成了,请稍候”。我认为问题在于我调用了一个 jquery 函数。在函数的成功回调中,我调用了另一个函数,我试图从中更新页面。

如果我使用 firebug 设置断点并单步执行代码,页面会更新并且我会看到 div 的消息。但是,如果我只是让代码运行,我看不到该消息。如果我在更新 div 之前和之后设置了一个警告框,我也会看到它。

以前有人见过这样的东西吗?

谢谢!

4

1 回答 1

5

通常,当 JS 代码正在运行时,所有其他渲染都会停止,就像您所看到的一样。您可以尝试使用 setTimeout 函数来允许在您的页面上进行渲染,如下所示:

doStuff();
$('#myDiv').html('Almost done, please wait');
setTimeout(doMoreStuff, 50);

请注意,doMoreStuff 是另一个函数,它将完成处理的最后一部分。

如果您的代码可以以这种方式拆分,它将允许浏览器进入一些渲染周期。您可能想尝试延迟(上面的 50)以找到适合您的数字,但如果您只想设置 div 的内容,那么 50 应该没问题(甚至可能 0 也可以)。

另外,我不记得用于设置 innerHTML 的 jQuery 语法,但我认为这一点很容易理解:)

于 2009-08-11T00:30:36.027 回答