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

时间:2015-09-18 04:47:12

标签: html variables vbscript hta

我正在创建一个hta应用程序而我正在尝试添加一个选项来更改颜色方案。我一直试图在标签中使用变量。例如: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 =&#34; changecolor&#34;我已经测试了,我知道它到了子

我尝试过使用Colortext.value或Colorbutton.value,但所有内容仍然会更改为默认颜色。标签是否无法识别变量,因此它只是跳过它还原为默认颜色?

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

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

3 个答案:

答案 0 :(得分:2)

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

我推荐在可能的所有情况下使用JavaScript而不是VBScript,尤其是对于更具表现力的语法,以及与VBScript的有限打字系统相比,基于原型的性质所带来的更大灵活性和编程选项。

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

请注意,您无法在HTA中可靠地使用“边缘模式”,因此过去几年浏览器的新发展将无法可靠地运行,例如新的CSS3效果或DOM更改。当您处于边缘模式时,HTA特定标记将被HTA shell忽略,因此您无法在边缘模式下设置自定义窗口图标或标题栏文本(我觉得这是一个错误,但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>

答案 1 :(得分:1)

您还可以看一下这个HTA示例乘法表(I * J): 它动态生成带颜色的HTA乘法表(I * J)

enter image description here

<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>

答案 2 :(得分:0)

我做了一些类似的事情。 从Active Directory生成工作站列表后,我检查这些工作站是否在线。如果是,StrResult将返回“成功”。

希望这有帮助

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