在VBS中的子执行期间更新CSS样式

时间:2017-07-13 18:02:02

标签: vbscript hta

我在VBScript中编写HTA,根据源工作簿中的数据填充具有不同工作表的excel工作簿。我已经编写了一个带有多个div的伴随HTA,它们在按下按钮时将其显示设置为无,以显示各种类型的输入,然后向用户提供一个“Run”按钮以开始工作簿填充。但是,我遇到了一个问题,即我无法同时更改div的可见性并在单击“运行”按钮时运行填充子。

为了说明,我的HTML看起来像这样:

<div id="panel1">
    [div content]
    <input type="button" id="panel1-next" onClick="ChangeFrame">
</div>
<div id="panel2">
    [div content]
    <input type="button" id="panel2-next" onClick="ChangeFrame">
</div>
<div id="panel3">
    [div content]
    <input type="button" id="panel3-run" onClick="ChangeFrame">
</div>
<div id="panel-end">
    [div content]
    <input type="button" id="panel-end">
</div>

ChangeFrame子看起来像这样

Sub ChangeFrame()
    Select case window.event.srcelement.id
        Case "panel1-next"
            panel1.style.display = "none"
            panel2.style.display = "block"
        case "panel2-next"
            panel2.style.display = "none"
            panel3.style.display = "block"
        case "panel3-run"
            panel3.style.display = "none"
            panel-end.style.display = "block"
            Call Main()
        case else
            MsgBox window.event.srcelement.id & " Something broke"
    End Select
End Sub

使用此代码,我希望ChangeFrame在按下panel3-run按钮时首先更新panel3panel-end的CSS,以便{{1}在运行时,会向用户显示Main的内容。但是,我遇到的问题是,panel-endpanel3的CSS仅在panel-end完成整个过程后才会进行直观更新,而不是之前。

当我尝试创建一个进度条,显示已经评估了多少源数据并将其制作成新工作表时,我在代码中的其他地方也遇到了这个问题。在Main我有以下HTML

panel-end

和以下CSS

<div id="bar-outline">
    <div id="progress-bar"></div>
</div>

#bar-outline { width: 200px; height: 20px; border: 1px solid black; margin: auto; margin-top: 50px; } #progress-bar { width:0px; height: 18px; border: 1px solid blue; background-color: blue; } 更大的div中创建空白进度条。我希望进度条在panel-end中的每个循环中增加宽度,如下所示:

Main

我们的想法是,在Sub Main() [code to locate source file] [code to create and save destination file] For i = 0 to 9 [code to find string from array(i) and make a new sheet with string name] [code to populate destination sheet(i+1) with all instances of the data that match the string from array(i)] progress-bar.style.width = (i/10)*198 Next End Sub 循环的每次迭代之后,For div的宽度将增加progress-bar宽度的10%,减去1px的两个像素边界。但是,我遇到与在bar-outlinepanel3之间切换时相同的问题:panel-end div的视觉外观在完成所有progress-bar之后才会更新,完成后,首先取消了进度条的推理。

我有两个问题需要回答。首先,代码是如何在VBScript中执行的,以便CSS和HTML只在子结束后可视化更新?第二,我可以通过哪些方式解决这个问题?

0 个答案:

没有答案