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>
答案 0 :(得分:2)
您的select标签中不需要onChange="FLFLBox_OnChange"
,因为函数FLFLBox_OnChange在没有它的情况下运行,因为您给它的名称。将它放在select标签中会导致它运行两次。
更改
<select listbox name="FLFLBox" size="5" onChange="FLFLBox_OnChange">
到
<select listbox name="FLFLBox" size="5">