與Access VBScript variable within Javascript inside of an HTA類似我試圖在兩個腳本之間傳遞一個變量。在HTA中將VBScript變量傳遞給Javascript
當我在該問題的答案中使用簡化示例時,其行爲與所述相同,並且該變量可用於Javascript。但是當我試圖在我的代碼中做同樣的事情時,它不起作用。
我認爲問題在於我想給我的代碼的JavaScript部分的變量是在VBScript中的sub
內部定義的,因此它們不可用於全局。我嘗試了兩件事 - 首先我嘗試了sub
之外的Dim
,這似乎使這兩個腳本都可以使用該變量,但是我在VBScript子內部設置的值沒有持續存在(JavaScript識別變量存在,但表示它是'未定義')。其次,我嘗試在VBScript中創建一個函數,以明確地將值設置爲全局變量,遇到一堆錯誤,不知道我是否做錯了什麼,或者如果這不是一個可行的方法。
下面是我的代碼一個精簡版:
<html>
<head>
<hta:application
APPLICATIONNAME = "Program ALERT"/>
<script type='text/vbscript'>
Sub Window_onload()
Dim cmd, srFSO, srFile, srCount, srMsg
cmd="bcp ""select cast(count(*) as varchar(2)) from database..table where foo = 'bar'"" queryout \\path\file.txt -c -T -S serveraddress"
Set srFSO = CreateObject("Scripting.Filesystemobject")
Set srFile = srFSO.OpenTextFile("\\path\file.txt")
srCount = srFile.Readall
srFile.Close
If srCount = 0 then
Me.SetTimeout "Me.Close()",8000
else
Me.SetTimeout "Me.Close()",0
End If
If srCount = 1 then
srMsg = "There is " + srCount + " open SR."
else
srMsg = "There are " + srCount + " open SRs."
End If
document.getelementbyid("SRs").innerHTML = srMsg
End Sub
Sub ExitProgram
window.close()
End Sub
</script>
<script type="text/javascript">
if (srCount != 0) {
seconds = 8;
}
else {
seconds = 0;
}
function decreaseTime(){
document.getElementById("exitbutton").value="Exit (" + seconds + ")";
seconds--;
if(seconds<0){
document.getElementById("exitbutton").value="Exit (" + seconds + ")";
return true;
}
setTimeout('decreaseTime()',1000);
}
window.onload = function() {
document.getElementById("exitbutton").value="Exit (" + seconds + ")";
setTimeout('decreaseTime()',1000);
}
</script>
</head>
<body scroll="no">
<h1>Title</h1>
<h2><div id="SRs"></div></h2>
<p align="right"><input id=exitbutton type="button" value="Exit" onClick="ExitProgram" class="myButton"></p>
</body>
</html>
從本質上講,什麼是應該發生的是,消息顯示多少條記錄是由一個SQL查詢在8秒之後自動關閉返回,然後。但是,如果查詢沒有返回任何記錄,那麼我希望它立即關閉。
在我添加JavaScript部分在退出按鈕上繪製倒計時之前,它表現得很好。但添加倒計時似乎強制應用程序保持打開狀態,直到JavaScript倒計時結束,即使SQL查詢沒有返回任何記錄。所以我試圖將查詢結果傳遞給JavaScript,以便它也可以在需要時將其倒計數開始點修改爲零。
這聽起來像你在這裏問多個問題。 1)爲什麼變量值不傳播? 2)如果SQL提前結束,爲什麼不關閉頁面? – GreenGiant
你提到你試圖把變量放在Sub的外部,但是在你的代碼中,它仍然在Sub中。你可以在小組之外發布你的代碼嗎? – GreenGiant
我想我的問題是*我怎樣才能讓變量傳播,所以我可以把一個'if'條件放入Javascript * **或** *我怎樣才能將相同的數據放入Javascript(出於同樣的目的) *。第一種方式更可取,因爲第二種方式基本上意味着將客戶端的工作負載/冗餘加倍。 – CactusCake