我有一个很长的javascript脚本。问题是,在它的中间我想改变div的innerHtml说“几乎完成请等待”。我认为问题是我调用了一个jquery函数。在函数的成功回调中我调用另一个函数,这是我试图从中更新页面的地方。
如果我使用firebug设置断点并单步执行代码,页面会更新,我会看到div的消息。但是,如果我只是让代码运行,我看不到消息。如果我在更新div之前和之后设置了一个警告框,我也会看到它。
之前有人见过这样的事吗?
谢谢!
答案 0 :(得分:5)
通常在运行JS代码时,所有其他渲染都会停止,就像您所看到的那样。您可以尝试使用setTimeout函数来允许在页面上进行渲染,如下所示:
doStuff();
$('#myDiv').html('Almost done, please wait');
setTimeout(doMoreStuff, 50);
请注意,doMoreStuff是另一个将执行处理的最后一部分的函数。
如果您的代码可以通过这种方式拆分,它将允许浏览器进入一些渲染周期。您可能想要尝试延迟(上面的50)来找到适合您的数字,但如果你想要做的就是设置div的内容,那么50应该没问题(可能甚至0都可以)。
另外,我不记得用于设置innerHTML的jQuery语法,但我认为这一点可以解决:)