HTA:当所有框都未选中时显示MsgBox
问题描述:
我仍然是HTA的新手,并且当没有选中复选框并且没有选择复选框时,它正在寻找添加警告,它禁止当前MsgBox表示所有复选框被处理。HTA:当所有框都未选中时显示MsgBox
当前MsgBox将被替换为objShell.Run行(robocopy)。
我知道我的代码可能有点基本,所以建议让它更有效率是最受欢迎的。
<html>
<head>
<title>Sync Tool</title>
<HTA:APPLICATION
APPLICATIONNAME="Sync Tool"
ID="SyncTool"
VERSION="1.0.0"
BORDER="dialog"
MAXIMIZEBUTTON="no"
MINIMIZEBUTTON="no"
SCROLL="no"
SINGLEINSTANCE="yes"
CONTEXTMENU="no"
SELECTION="no"/>
</head>
<script language="VBScript">
Set objShell = CreateObject("Wscript.Shell")
Sub Window_OnLoad
Dim width,height
width=330
height=310
self.ResizeTo width,height
self.MoveTo (screen.AvailWidth-width)/2,(screen.AvailHeight-height)/2
End Sub
Sub OnClickButtonSyncNow()
' Box A
If BoxAA.checked Then
MsgBox "BoxAA"
Else
'Do nothing
End If
If BoxAB.checked Then
MsgBox "BoxAB"
Else
'Do nothing
End If
If BoxAC.checked Then
MsgBox "BoxAC"
Else
'Do nothing
End If
If BoxAD.checked Then
MsgBox "BoxAD"
Else
'Do nothing
End If
If BoxAE.checked Then
MsgBox "BoxAE"
Else
'Do nothing
End If
' Box B
If BoxBA.checked Then
MsgBox "BoxBA"
Else
'Do nothing
End If
If BoxBB.checked Then
MsgBox "BoxBB"
Else
'Do nothing
End If
If BoxBC.checked Then
MsgBox "BoxBC"
Else
'Do nothing
End If
If BoxBD.checked Then
MsgBox "BoxBD"
Else
'Do nothing
End If
If BoxBE.checked Then
MsgBox "BoxBE"
Else
'Do nothing
End If
MsgBox "All checkboxes are processed"
End Sub
Sub ExitTool()
window.close()
End Sub
</script>
<body bgcolor="firebrick">
<style type="text/css">
.tg {border-collapse:collapse;border-spacing:0;}
.tg th{font-family:Arial, sans-serif; font-size:14px; font-weight:normal; padding-top:0px ;padding-right:20px; padding-bottom:0px; padding-left:0px ;border-style:solid; border-width:0px; overflow:hidden; word-break:normal;}
.tg td{font-family:Arial, sans-serif; font-size:14px; padding-top:5px ;padding-right:10px; padding-bottom:0px; padding-left:0px ;border-style:solid; border-width:0px; overflow:hidden; word-break:normal;}
.tg .tg-header{color:#FFFB00; font-size:22px; font-weight:bold; font-family:Verdana, Geneva, sans-serif !important;}
.tg .tg-text{color:white; font-family:Verdana, Geneva, sans-serif !important; vertical-align:top}
.button {height:50px; width:136px; font-weight:bold; background-color:#555555; border: 2px solid #FFFB00; color:white; text-align:center; text-decoration:none; display:inline-block; font-size:16px;}
</style>
<table class="tg">
<tr>
<th class="tg-header">Box A</th>
<th class="tg-header">Box B</th>
</tr>
<tr>
<td class="tg-text"><input type="checkbox" name="AA">AA</td>
<td class="tg-text"><input type="checkbox" name="BA">BA</td>
</tr>
<tr>
<td class="tg-text"><input type="checkbox" name="AB">AB</td>
<td class="tg-text"><input type="checkbox" name="BB">BB</td>
</tr>
<tr>
<td class="tg-text"><input type="checkbox" name="AC">AC</td>
<td class="tg-text"><input type="checkbox" name="BC">BC</td>
</tr>
<tr>
<td class="tg-text"><input type="checkbox" name="AD">AD</td>
<td class="tg-text"><input type="checkbox" name="BD">BD</td>
</tr>
<tr>
<td class="tg-text"><input type="checkbox" name="AE">AE</td>
<td class="tg-text"><input type="checkbox" name="BE">BE</td>
</tr>
</table>
<br>
<input type="button" class="button" name="SyncNow" id="SyncNow" value="Sync Now" onclick="OnClickButtonSyncNow">
<input type="button" class="button" name="Exit" id="Exit" value="Exit" onclick="ExitTool">
</body>
</html>
答
使用标志(至少一个动作完成的)和一个循环:
Sub OnClickButtonSyncNow()
Dim bF : bF = False
Dim c1, c2
For Each c1 In Split("A B")
For Each c2 In Split("A B C D")
Dim n : n = c1 & c2
Dim b : Set b = document.getElementById(n)
If b.Checked Then
MsgBox n
bF = True
End If
Next
Next
If bF Then
MsgBox "all done"
Else
MsgBox "nice try"
End If
End Sub
答
我当前的代码,这要归功于Ekkehard.Horner。 改进建议总是受欢迎的。
<html>
<head>
<title>Sync Tool</title>
<HTA:APPLICATION
APPLICATIONNAME="Sync Tool"
ID="SyncTool"
VERSION="1.0.0"
BORDER="dialog"
MAXIMIZEBUTTON="no"
MINIMIZEBUTTON="no"
SCROLL="no"
SINGLEINSTANCE="yes"
CONTEXTMENU="no"
SELECTION="no"/>
</head>
<script language="VBScript">
Set objShell = CreateObject("Wscript.Shell")
Sub Window_OnLoad
Dim width,height
width=330
height=310
self.ResizeTo width,height
self.MoveTo (screen.AvailWidth-width)/2,(screen.AvailHeight-height)/2
End Sub
Sub OnClickButtonSyncNow()
' Box A
If BoxAA.checked Then
MsgBox "BoxAA"
Else
'Do nothing
End If
If BoxAB.checked Then
MsgBox "BoxAB"
Else
'Do nothing
End If
If BoxAC.checked Then
MsgBox "BoxAC"
Else
'Do nothing
End If
If BoxAD.checked Then
MsgBox "BoxAD"
Else
'Do nothing
End If
If BoxAE.checked Then
MsgBox "BoxAE"
Else
'Do nothing
End If
' Box B
If BoxBA.checked Then
MsgBox "BoxBA"
Else
'Do nothing
End If
If BoxBB.checked Then
MsgBox "BoxBB"
Else
'Do nothing
End If
If BoxBC.checked Then
MsgBox "BoxBC"
Else
'Do nothing
End If
If BoxBD.checked Then
MsgBox "BoxBD"
Else
'Do nothing
End If
If BoxBE.checked Then
MsgBox "BoxBE"
Else
'Do nothing
End If
Dim bF : bF = False
Dim c1
For Each c1 In Split("A B C D E F G H I J")
Dim n : n = c1
Dim b : Set b = document.getElementById(n)
If b.Checked Then
bF = True
End If
Next
If bF Then
MsgBox "all done"
Else
MsgBox "nothing selected"
End If
End Sub
Sub ExitTool()
window.close()
End Sub
</script>
<body bgcolor="firebrick">
<style type="text/css">
.tg {border-collapse:collapse;border-spacing:0;}
.tg th{font-family:Arial, sans-serif; font-size:14px; font-weight:normal; padding-top:0px ;padding-right:20px; padding-bottom:0px; padding-left:0px ;border-style:solid; border-width:0px; overflow:hidden; word-break:normal;}
.tg td{font-family:Arial, sans-serif; font-size:14px; padding-top:5px ;padding-right:10px; padding-bottom:0px; padding-left:0px ;border-style:solid; border-width:0px; overflow:hidden; word-break:normal;}
.tg .tg-header{color:#FFFB00; font-size:22px; font-weight:bold; font-family:Verdana, Geneva, sans-serif !important;}
.tg .tg-text{color:white; font-family:Verdana, Geneva, sans-serif !important; vertical-align:top}
.button {height:50px; width:136px; font-weight:bold; background-color:#555555; border: 2px solid #FFFB00; color:white; text-align:center; text-decoration:none; display:inline-block; font-size:16px;}
</style>
<table class="tg">
<tr>
<th class="tg-header">Box A</th>
<th class="tg-header">Box B</th>
</tr>
<tr>
<td class="tg-text"><input type="checkbox" name="BoxAA" id="A">AA</td>
<td class="tg-text"><input type="checkbox" name="BoxBA" id="B">BA</td>
</tr>
<tr>
<td class="tg-text"><input type="checkbox" name="BoxAB" id="C">AB</td>
<td class="tg-text"><input type="checkbox" name="BoxBB" id="D">BB</td>
</tr>
<tr>
<td class="tg-text"><input type="checkbox" name="BoxAC" id="E">AC</td>
<td class="tg-text"><input type="checkbox" name="BoxBC" id="F">BC</td>
</tr>
<tr>
<td class="tg-text"><input type="checkbox" name="BoxAD" id="G">AD</td>
<td class="tg-text"><input type="checkbox" name="BoxBD" id="H">BD</td>
</tr>
<tr>
<td class="tg-text"><input type="checkbox" name="BoxAE" id="I">AE</td>
<td class="tg-text"><input type="checkbox" name="BoxBE" id="J">BE</td>
</tr>
</table>
<br>
<input type="button" class="button" name="SyncNow" id="SyncNow" value="Sync Now" onclick="OnClickButtonSyncNow">
<input type="button" class="button" name="Exit" id="Exit" value="Exit" onclick="ExitTool">
</body>
</html>
这适用于我给出的例子。但是,如果我需要将'name ='值改为例如不同的值数据这和数据。 我有点困惑'document.getElementById(n)'是如何工作的,因为在我的html部分没有提供'id ='。 – WatskeBart