Javascript 单个 select 选项 HTA 中的多个值

Javascript single select option multiple values in HTA

我有一个可以工作的 HTA wakeup/reboot/shutdown 多台带有 vbscript 的计算机。 一个 select 下拉菜单,带有 3 个按钮来执行 3 种不同的功能。

主要 hta:

        <select name="Control_PC">
            <option value="0" selected>Select Computer</option>     
            <option value="1">PC1</option>
            <option value="2">PC2</option>
            <option value="3">PC3</option>

            <input type="button"    value="WAKE UP"         onClick="executewake">
            <input type="button"    value="RESTART"         onClick="executereboot">
            <input type="button"    value="SHUTDOWN"        onClick="executeshutdown">  
        </select>          

使用 vbscript:

 ' SELECTION REBOOT PCs
 Sub executereboot
  if Control_PC.value = 1 then 
   Set Shell = CreateObject("Wscript.Shell") : command = "shutdown -r -t 01 -m \PC1"
   Shell.Run command, 1, false
  Elseif Control_PC.value = 2 then 
   Set Shell = CreateObject("Wscript.Shell") : command = "shutdown -r -t 01 -m \PC2"
   Shell.Run command, 1, false
  Elseif Control_PC.value = 3 then 
   Set Shell = CreateObject("Wscript.Shell") : command = "shutdown -r -t 01 -m \PC3"
   Shell.Run command, 1, false
  end if 
 End Sub  
 
 
 ' SELECTION SHUTDOWN PCs
 Sub executeshutdown
  if Control_PC.value = 1 then 
   Set Shell = CreateObject("Wscript.Shell") : command = "shutdown -s -t 01 -m \PC1"
   Shell.Run command, 1, false
  Elseif Control_PC.value = 2 then 
   Set Shell = CreateObject("Wscript.Shell") : command = "shutdown -s -t 01 -m \PC2"
   Shell.Run command, 1, false
  Elseif Control_PC.value = 3 then 
   Set Shell = CreateObject("Wscript.Shell") : command = "shutdown -s -t 01 -m \PC3"
   Shell.Run command, 1, false
  end if 
 End Sub   
 
 
 ' SELECTION WAKE PCs
 Sub executewake
  if Control_PC.value = 1 then 
   Set Shell = CreateObject("Wscript.Shell") : command = "tools\wol.exe 10604B7609CE"
   Shell.Run command, 1, false
  Elseif Control_PC.value = 2 then 
   Set Shell = CreateObject("Wscript.Shell") : command = "tools\wol.exe 10604B7609F2"
   Shell.Run command, 1, false
  Elseif Control_PC.value = 3 then 
   Set Shell = CreateObject("Wscript.Shell") : command = "tools\wol.exe 10604B7E829B"
   Shell.Run command, 1, false
  end if 
 End Sub 

现在我知道如何在 javascript 中使用一个按钮创建 select 选项,使用一个值:

   
  <select id="Control_PC">
    <option value="" selected>Select Computer</option>
    <option value="shutdown -r -t 01 -m \PC1">PC1</option>
    <option value="shutdown -r -t 01 -m \PC2">PC2</option>
    <option value="shutdown -r -t 01 -m \PC3">PC3</option>
    <input  type="button" value="Reboot"  onClick="runSelection(document.getElementById('Control_PC').value)">
  </select>

但是如何使用 javascript 创建三个按钮以与 vbscript 版本的行为相同,使用一个优雅的解决方案将所有 wake/reboot/shutdown 命令用作一个函数中的不同值,例如:

Select 计算机 PC1 PC2 PC3

任何帮助将不胜感激:)

谢谢 大卫

看来您可以通过将变量发送到您调用的函数来完成您想做的事情。

例如,您可以像这样将 MAC 地址设置为 select 框的值:

    <select name="Control_PC">
        <option value="" selected>Select Computer</option>      
        <option value="10604B7609CE">PC1</option>
        <option value="10604B7609F2">PC2</option>
        <option value="10604B7E829B">PC3</option>
    </select>

然后你可以将每个按钮设置为调用相同的函数,并为你想要执行的操作设置一个参数,如下所示:

    <input type="button"    value="WAKE UP"         onClick="RunSelection('wake')">
    <input type="button"    value="RESTART"         onClick="RunSelection('restart')">
    <input type="button"    value="SHUTDOWN"        onClick="RunSelection('shutdown')"> 

然后您可以配置该 vbscript 函数以根据该参数的值和 select 框的值执行特定操作。像这样:

Sub RunSelection(strAction)
    If Control_PC.selectedIndex = 0 Then MsgBox "Select a computer.",vbExclamation : Exit Sub 
    pcName = Control_PC.Options(Control_PC.selectedIndex).innerText
    macAddress = Control_PC.value

    Select Case strAction
        Case "wake"
            strCommand = "tools\wol.exe " & macAddress
        Case "restart"
            strCommand = "shutdown -r -t 01 -m \" & pcName
        Case "shutdown"
            strCommand = "shutdown -s -t 01 -m \" & pcName
    End Select 
    MsgBox "Running command: " & strCommand
End Sub 

有很多方法可以完成您想要做的事情,但这应该可以帮助您入门。

编辑OP的评论:

我想你想要做的是这样的事情。

<select name="Control_PC">
    <option value="" selected>Select Computer</option>      
    <option restart="shutdown -r -t 01 -m \PC1"  shutdown="shutdown -s -t 01 -m \PC1" >PC1</option>
    <option restart="shutdown -r -t 01 -m \PC2"  shutdown="shutdown -s -t 01 -m \PC2" >PC2</option>
    <option restart="shutdown -r -t 01 -m \PC3"  shutdown="shutdown -s -t 01 -m \PC3" >PC3</option>

</select>
<input  type="button" value="Restart"    onClick="RunSelection(Control_PC.Options(Control_PC.selectedIndex).getAttribute('restart'))">
<input  type="button" value="Shutdown"    onClick="RunSelection(Control_PC.Options(Control_PC.selectedIndex).getAttribute('shutdown'))">

本质上,您是在创建一个自定义属性并为其分配一个值。

Control_PC.Options(Control_PC.selectedIndex) 将获得 selected 选项,getAttribute 将获得您指定的属性值。