我正在创建一个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。我是一个新手,所以如果你能尽可能地保持愚蠢的答案那就太棒了,再次感谢
答案 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)
<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>"