HTA 读取文本文件并填充下拉框

HTA to read a text file and populate drop down box

文本文件示例将包含以下数据、名称和关联的 IP 地址,格式如下:

name;IP

harry;192.168.1.14
billy;192.168.1.22

使用VBS读取文本文件并将数据分成两部分:

Sub LoadDropDownName
    Set obj = CreateObject("Scripting.FileSystemObject")  'Creating a File Object
    Const ForReading = 1                    'Defining Constant Value to read from a file
    Set obj1 = obj.OpenTextFile("savedhosts.txt", ForReading) 'Opening a text file and reading text from it
    Dim str, str1
    str = obj1.ReadAll                      'All text from the file is read using ReadAll
    MsgBox str                              'Contents of a file will be displayed through message box
    'Do While obj1.AtEndofStream            'Reading text line wise using Do Loop and ReadLine
    '    str1 = obj1.ReadLine
    '    MsgBox str1
    'Loop
    Do Until obj1.AtEndOfStream
        strNextLine = obj1.ReadLine
        arrServiceList = Split(strNextLine, ";")
        Set objOption = document.CreateElement("OPTION")
        objOption.title = arrServiceList(0)
        objOption.value = arrServiceList(1)
        LoadDropDownName.Add(objOption)
        MsgBox "arrServiceList(0) = " & arrServiceList(0)
        MsgBox "arrServiceList(1) = " & arrServiceList(1)
    Loop
    'MsgBox ""        
    obj1.Close                              'Closing a File
    Set obj = Nothing                       'Releasing File object    
End Sub

MsgBox str 正常工作,因为它按预期显示了 "savedhosts.txt" 文件中的所有数据。

然而我无法得到

MsgBox "arrServiceList(0) = " & arrServiceList(0)
MsgBox "arrServiceList(1) = " & arrServiceList(1)

显示在框中。我已将 MsgBox 命令移动到 Loop 行下方。

Loop
MsgBox "arrServiceList(0) = " & arrServiceList(0)
MsgBox "arrServiceList(1) = " & arrServiceList(1)
'MsgBox ""      
obj1.Close                              'Closing a File
Set obj = Nothing                       'Releasing File object  

我收到一个错误:

Type mismatch 'arrServiceList'

应该从 Sub 捕获数据的 HTML 部分:

<input type='text' maxlength="15" class="enterhostip" id="INPUT-IP" name='text1'/>

输入 IP:用户可以输入一个新的 IP,当 'Saved Hostname' 选择一个新值时会自动更改。

<input type="text" maxlength="20" name="hostname" id="hostname" />

主机名:用户可以为主机输入一个新名称

<select id="savedhostname" maxlength="20" name="savedhostname" onchange="vbscript:LoadDropDownName" class="pwhost" />

保存的主机名:下拉数据仅显示 savedhosts.txt 文件中的名称。更改名称将执行 LoadDropDownName 脚本并更改 "IP-Input".

的值

如果有人能给我一个类似代码的例子(使用 VBScript)来读取这个文本文件的内容并在使用 html 时仅在 html 下拉框中显示名称单行文本输入区域自动填充关联的IP地址?

我搜索了此方法的示例,但找不到满足此简单条件的示例!

我认为问题可能是您读取了结束流的整个文件(我怀疑是出于调试目的),然后 obj.AtEndOfStream 变成了 true。因此你的循环不会执行。

  str=obj1.ReadAll ' ends the stream

您可以关闭然后重新打开流

Set obj1 = obj.OpenTextFile("savedhosts.txt", ForReading) 'Opening a text file and reading text from it
Dim str,str1
str=obj1.ReadAll                        'All text from the file is read using ReadAll
Msgbox str
obj1.Close
Set obj1 = obj.OpenTextFile("savedhosts.txt", ForReading) ' etc

或者只是省略 obj1.ReadAll 位,或者将 str 作为一大块文本处理