This is normal behavior in an HTA. What I do is use a sub called "sleepy" which produces a near-instant "delay" which pauses the script in a way that allows html updates to happen inside other routines.
Add a call to this function right after updating the InnerHTML.
Sub sleepy
Set objShell = CreateObject("WScript.Shell")
strCmd = "%COMSPEC% /c"
objShell.Run strCmd,0,1
End Sub