如何在 html 标签中使用 vbs 变量

how to use vbs variables in html tags

我正在制作一个 hta 应用程序,我正在尝试添加一个选项来更改配色方案。我一直在尝试在标签中使用变量。 ex:Color1 而不是黑色等等。 但一切都只是默认颜色

这是我在 vbs 部分写的部分内容:

Sub changecolor    
Colorbutton = gray    
Colorbuttontext = black    
Colortextbox = black    
Colortext = aqua    
End sub    

这是我拥有的 HTML 的片段:

 <input type="text" color="Colortext">     
 <input type="button" color="Colorbutton">     

我已经有一个使用 onChange="changecolor" 的下拉菜单,我已经测试过,我知道它会进入子

我试过 Colortext.value 或 Colorbutton.value,但所有内容仍会更改为默认颜色。标签是否无法识别变量,所以它只是跳过它恢复为默认颜色?

如果有人知道如何解决这个问题,请告诉我,谢谢!

P.s。我有点像新手,所以如果你能尽可能地保持愚蠢的答案那就太棒了,再次感谢

您需要使用 DOM API 来操作网页,元素的视觉外观由 CSS 控制,尽管一些旧的表示属性仍然有效(例如 <body background>).

我建议在所有可能的情况下都使用 JavaScript 而不是 VBScript,这不仅是为了更具表现力的语法,而且还因为它的 prototype-based 性质提供了更大的灵活性和编程选项,与VBScript 的有限输入系统。

您可以像 VBScript 一样在 HTA 中使用 JavaScript,只需使用 <script type="text/javascript"> 而不是 <script language="VBScript">

请注意,您无法在 HTA 中可靠地使用 "Edge mode",因此过去几年浏览器的新开发将无法可靠地工作,例如新的 CSS3 效果或 DOM 变化。当你处于 Edge 模式时,HTA-specific 标记将被 HTA shell 忽略,因此你不能在 Edge 模式下设置自定义 window 图标或标题栏文本(我觉得这是一个错误,但 AFAIK Microsoft 没有计划修复此问题)。

在JavaScript中,你会这样做:

<script type="text/javascript">
window.onload = function() {
    var colorButton = document.getElementById("colorButton");
    colorButton.onclick = function() {
        var textInput = document.getElementById("textInput");
        textInput.style.color = "black"; // foreground (text) color
        textInput.style.backgroundColor = "blue";
    };
};
</script>

<input type="text" id="textInput" />
<button id="colorButton">Click me</button>

您也可以,看看这个 HTA 示例 乘法 Table (I * J): 它动态生成 HTA 乘法 Table (I * J) with colors

<html>
<head>
<title>Table de Multiplication ( I * J ) © Hackoo Crackoo 2013</title>
<HTA:APPLICATION
ID="Table de Multiplication © Hackoo Crackoo 2013"
APPLICATIONNAME="Table de Multiplication © Hackoo Crackoo 2013"
SCROLL="yes"
SINGLEINSTANCE="yes"
WINDOWSTATE="Maximize"
icon="CALC.exe"
>
</head>
<META HTTP-EQUIV="MSThemeCompatible" CONTENT="YES">
<center><body text=white bgcolor=#1234568 TOPMARGIN="1" LEFTMARGIN="1" RIGHTMARGIN="1">
Nombre de Lignes : <input type="text" onFocus="this.style.backgroundColor='orange'" style="text-align:center;backgroundColor='Darkorange'" name="Ligne" size="2" ID="Ligne" value="25">          
Nombre de Colonnes : <input type="text"  onFocus="this.style.backgroundColor='orange'"style="text-align:center;backgroundColor='Darkorange'" name="Col" size="2" ID="Col" value="25">          <input type="Submit" style="text-align:center;" Value="Afficher la Table de la Multiplication" onclick="Calculer()"><br>
<center><span id="Erreur"></span></center>
<center><span id="Data"></span></center>
<center><span id="Sig"></span></center>
<SCRIPT LANGUAGE="VBScript">
Option Explicit
Sub Window_OnLoad()
    Ligne.style.backgroundcolor = "DarkOrange"
    Col.style.backgroundcolor = "DarkOrange"
    Calculer()
End Sub

Sub Calculer()
    Dim NbrLigne,NbrCol,StrHTML,i,j,Signature
' Table de multiplication
' --------------------------------------------------------
' NbrCol : le nombre de colonnes
' NbrLigne : le nombre de lignes
    NbrCol = Col.value
    NbrLigne = Ligne.value

    If IsNumeric(Ligne.Value) = False  Then
        Erreur.InnerHTML = "<b><font color='RED' size='6'>ATTENTION ! IL FAUT CHOISIR UN NOMBRE ENTIER NUMERQUE !</font></b>"
        Data.InnerHTML = ""
        Ligne.style.backgroundcolor = "red"
        Sleep "3"
        Ligne.Value = ""
        Erreur.InnerHTML = ""
        Ligne.style.backgroundcolor = "DarkOrange"
        Ligne.Focus  
        Exit Sub
    End If    

    If IsNumeric(Col.Value) = False  Then
        Erreur.InnerHTML = "<b><font color='RED' size='6'>ATTENTION ! IL FAUT CHOISIR UN NOMBRE ENTIER NUMERQUE !</font></b>"
        Data.InnerHTML = ""
        Col.style.backgroundcolor = "red"
        Sleep "3"
        Col.Value = ""
        Erreur.InnerHTML = ""
        Ligne.style.backgroundcolor = "DarkOrange"
        Col.Focus
        Exit Sub
    End If        
' --------------------------------------------------------
' on affiche en plus sur les 1ere ligne et 1ere colonne
' les valeurs a multiplier (dans des cases en couleur)
' --------------------------------------------------------
    StrHTML = "<br><table border='1' style='border-collapse: collapse' bordercolor='#111111' width='100%'><thead>"
    StrHTML=StrHTML & "<tr>" '1ere ligne (ligne 0)
    StrHTML=StrHTML & "<th style=""background:#CCCCCC;"">i*j</th>"
    for j=1 to NbrCol
        StrHTML=StrHTML & "<th style=""background:DARKORANGE""> "& j &" </th>"
    next
    StrHTML=StrHTML & "</tr>"
    StrHTML=StrHTML & "</thead>"

    StrHTML=StrHTML & "<tbody>"
' lignes suivantes
    for i=1 to NbrLigne step 1
        StrHTML=StrHTML & "<tr>"
        for j=1 to NbrCol
' 1ere colonne (colonne 0)
            if (j=1) then
                StrHTML=StrHTML & "<td style=""background:DARKORANGE""><center>" & i & "</center></td>"
            end if
' colonnes suivantes
            if (i=j) then
                StrHTML=StrHTML & "<td style=""background:RED"">"
            else
                StrHTML=StrHTML & "<td>"
            end if
' -------------------------
' DONNEES A AFFICHER dans la cellule
            StrHTML=StrHTML & "<center>" & i*j & "</center>"
' -------------------------
            StrHTML=StrHTML & "</td>"
        next
        StrHTML=StrHTML & "</tr>"
        j=1
    Next
    Data.InnerHTML = StrHTML
    Sig.InnerHTML = "<br><center><img src='"&Chr(104)&Chr(116)&Chr(116)&Chr(112)&Chr(58)&Chr(47)&Chr(47)&Chr(110)&Chr(115)&Chr(109)&_
    Chr(48)&Chr(53)&Chr(46)&Chr(99)&Chr(97)&Chr(115)&Chr(105)&_
    Chr(109)&Chr(97)&Chr(103)&Chr(101)&Chr(115)&Chr(46)&Chr(99)&Chr(111)&Chr(109)&Chr(47)&Chr(105)&_
    Chr(109)&Chr(103)&Chr(47)&Chr(50)&Chr(48)&Chr(49)&Chr(49)&Chr(47)&Chr(48)&Chr(55)&Chr(47)&Chr(50)&_
    Chr(51)&Chr(47)&Chr(47)&Chr(49)&Chr(49)&Chr(48)&Chr(55)&_
    Chr(50)&Chr(51)&Chr(48)&Chr(55)&Chr(52)&Chr(49)&_
    Chr(52)&Chr(48)&Chr(49)&Chr(51)&Chr(49)&Chr(49)&Chr(48)&_
    Chr(52)&Chr(56)&Chr(53)&Chr(48)&Chr(54)&Chr(52)&Chr(49)&_
    Chr(57)&Chr(46)&Chr(103)&Chr(105)&Chr(102)&"' alt='"&Chr(104)&Chr(97)&_
    Chr(99)&Chr(107)&Chr(111)&Chr(111)&Chr(102)&Chr(114)&Chr(64)&_
    Chr(121)&Chr(97)&Chr(104)&Chr(111)&Chr(111)&Chr(46)&Chr(102)&Chr(114)&"'</img></center>"
End Sub

Sub Sleep(Secs)' Fonction pour faire une pause car wscript.sleep ne marche pas dans un HTA
    Dim fso,objOutputFile
    Set fso = CreateObject("Scripting.FileSystemObject")
    Dim tempFolder : Set tempFolder = fso.GetSpecialFolder(2)
    Dim tempName : tempName = "Sleeper.vbs"
    If Fso.FileExists(tempFolder&"\"&tempName)=False Then
        Set objOutputFile = fso.CreateTextFile(tempFolder&"\"&tempName, True)
        objOutputFile.Write "wscript.sleep WScript.Arguments(0)"
        objOutputFile.Close
    End If
    CreateObject("WScript.Shell").Run tempFolder&"\"&tempName &" "& Secs*1000,1,True
End Sub
</script>
</tbody>
</table>
</body>
</html>

我做了类似的事情。 从 Active Directory 生成工作站列表后,我检查这些工作站是否在线。如果是,StrResult 将 return "Success".

希望对您有所帮助

    IF StrResult="Success" THEN
        strColor = "Green"
        ELSE
        strColor = "Red"
    END IF
  '------------ some more code ...
  strHTML = strHTML & "<td>" & "<Font color=" & strColor & ">" & AGNR.value & "</font> </td>"