【发布时间】:2014-12-09 12:38:45
【问题描述】:
我希望这个 HTA 代码打印 a 稍后会被 b 替换。但是,它的作用是在一段时间内什么都不打印,然后b。
启用 MsgBox 行后,它会首先打印 a。
statusinfo.InnerHTML = "a" 的执行似乎被推迟了。任何人都可以告诉我这是为什么吗?我将如何获得所需的行为(立即刷新)?
<SCRIPT LANGUAGE=VBScript>
Sub doThis()
statusinfo.InnerHTML = "a"
'MsgBox "stop"
intensiveOperation
statusinfo.InnerHTML = "b"
End Sub
Sub intensiveOperation()
'takes long
End Sub
</SCRIPT>
<BODY>
<button onclick="doThis">Run</button>
<div id="statusinfo"> </div>
</BODY>
</HTML>
【问题讨论】:
-
当你给任意一个变量依次赋值两个不同的值时,只有最后一个是运算后的实际值。首先运行脚本,然后重新渲染页面。如果你想在页面上看到
a和b,你必须使用setTimeout方法来延迟intensiveOperation,这样a就会在新脚本执行之前被渲染。 -
那么如何修改我的代码才能获得所需的结果?我尝试使用
retval = window.setTimeout("intensiveOperation", 2000, "VBScript")包装 intensiveOperation,但它唯一做的就是现在立即显示b而不是一段时间后显示。与 2000 代替 10 相同。a从未显示。