如何在 ASP Classic (javascript) 中循环或访问对象集合?

问题描述

于是我在我的工作场所发现了这个旧的 Web 应用程序(asp classic)并被要求对其进行修改。我想要做的是,我想显示这个特定文件夹中的所有文件。我没有使用链接对每个文件名进行硬编码,而是尝试如下:

<%
    var fs = new ActiveXObject("Scripting.FileSystemObject");
    var fo = new ActiveXObject("Scripting.FileSystemObject");
    var f = new ActiveXObject("Scripting.FileSystemObject");
    var theFile = new ActiveXObject("Scripting.FileSystemObject");

    fo=fs.GetFolder("C:\\inetpub\\wwwroot\\edocument\\MyFiles");
    f = fo.Files;

    For Each theFile in f
        Response.write(theFile.Name+"<br>");
    Next
%>

似乎 For Each 循环在 asp javascript 中不起作用/无法识别,但找到了一些使用 vbscript 的工作示例。我也尝试过直接访问集合:

 Response.write(f[0].Name);

但它说...is null or not an object

知道如何访问此文件集吗?

解决方法

在 javascript 中,您需要一个 Enumerator() to walk the collection,并使用 for nextwhile,如下例所示

<% @LANGUAGE="JScript" %>
<%
var fso = Server.CreateObject("Scripting.FileSystemObject");
var fo = fso.GetFolder("C:\\inetpub\\wwwroot\\edocument\\MyFiles");

var f = new Enumerator(fo.Files);
f.moveFirst()
while (!f.atEnd()) {
   Response.Write(f.item().name + "<BR>");
   f.moveNext();
}

fo = null;
f = null;
fso = null;
%>