即时加载列表框会生成重复的条目

时间:2017-03-03 19:26:29

标签: vbscript hta

Onload,此HTA列出FolderX中包含的文件,并在列表框中显示其名称。当我选择一个文件时,第二个列表框应列出文件记录(简单文本项 - 例如itemA,itemB)。相反,它会在第一组和第二组之间用空格列出两次记录。 msgbox似乎表明我正在通过FLFLBox_onChange进行两次旅行。为什么会这样? 我不想取消选择该文件,因为它显示我正在查看哪些文件的记录(是的,我可以把它放到另一个框中,但这是问题)? 谢谢。                  

    <HTA:APPLICATION ID="FilelistBuilder" BORDER="thin" BORDERSTYLE="complex" maximizeButton="yes" minimizeButton="yes" />

    <script language=vbscript>

    option explicit
    dim forReading, forWriting
    forReading = 1
    forWriting = 2
    dim strNewFile, objFSO, objFile, objFiles, strLine, objOption, oFile, colFiles, objFolder
    dim objShell, oExec, strWD,intFileCount
    dim strTargetFLFL
    strTargetFLFL = "C:\FolderX"

    Sub Window_Onload
    'Creates an on-the-fly listbox of files 
            Set objFSO = CreateObject("Scripting.FileSystemObject")
            Set objFolder = objFSO.getFolder(strTargetFLFL)
            set colFiles = objFolder.files
            intFileCount = 0
                    For Each oFile in colFiles
                        strLine = ofile.name
                    Set objOption = Document.createElement("OPTION")
                    objOption.Text = strLine
                    objOption.Value = strLine
                    FLFLBox.Add(objOption)
                    intFileCount = intFileCount +1
                Next

    End Sub


    Sub FLFLBox_onChange
    'Creates an on-the-fly list of file contents for selected file
        dim strTargetFL, strContents, arrContents, ContentRecord
        strTargetFL = strTargetFLFL & "\" & FLFLBox.value
        msgbox "File Name: " & strTargetFL 
            Set objFile = objFSO.OpenTextFile(strTargetFL,forReading)
            strContents = objFile.ReadAll
            arrContents = split(strContents,vbnewline)
            For Each ContentRecord in arrContents
            Set objOption = Document.createElement("OPTION")
            objOption.Text = ContentRecord
            objOption.Value = ContentRecord
                FLBox.Add(objOption)
            Next
    End Sub




    sub Close_onclick
    msgbox "The application will exit and any unsaved data will be lost"
    window.close
    end sub

    </script>

    </head>
    <body>
    <h1> ARPA </h1>

    <h2> File List Builder</h2>
    <BR>

    <input type="button" name=Close value="Close">
    <br>
    <p>
    </p>
    </div>

    <div id="Action style="position:absolute;top:10%;left:30%">
    </div>

    <div style="position:absolute;top:5%;left:60%">
    List of Files - Click to List Contents;
    </div>

    <div id="FileListFileList" style="position:absolute;top:10%;left:60%;right:100%">
    <select listbox name="FLFLBox" size="5" onChange="FLFLBox_OnChange">
    </select>
    </div>

    <div style="position:absolute;top:30%;left:60%">
    List File Contents
    </div>

    <div id="OneFileList" style="position:absolute;top:35%;left:60%;right:100%">
    <select listbox name="FLBox" size="10">
    </select>
    </div>

    <div id="FileEdit" style="position:absolute;left:60%">
    </div>

    </form>
    </body>
    </html>

1 个答案:

答案 0 :(得分:2)

您的select标签中不需要onChange="FLFLBox_OnChange",因为函数FLFLBox_OnChange在没有它的情况下运行,因为您给它的名称。将它放在select标签中会导致它运行两次。

更改

<select listbox name="FLFLBox" size="5" onChange="FLFLBox_OnChange">

<select listbox name="FLFLBox" size="5">
相关问题