0

我对如何为对象数组执行 for-each 循环感到困惑。目前,我的方法以两种方式之一让我出错。要么 for 循环执行并遇到问题,因为它认为类变量未定义,要么遇到对象类型是非法赋值的问题。

这是我定义的类:

Class url_Link
     Public title, link
     Public Default Function Init(newTitle, newLink)
         title = newTitle
         link = newLink
         Set Init = Me
     End Function
End Class

作为参考,我得到的错误是:

Microsoft VBScript 运行时错误“800a01f5”
非法分配:“url_Link”
第 674 行

使用此代码段:

<% for each x in systemSettingsArray%> 
<tr>
<td class='nograph'><A href='<%x.link%>'><%x.title%></a></td>
</tr>
<%next%> 

当我更改url_Link为时x,我收到此错误:

无效的过程调用或参数“链接”

创建对象并填充数组的代码:

Dim systemSettingsArray(1)
Dim link
Dim arrayCounter
arrayCounter = 0

Set systemSettingsArray(arrayCounter) = (New url_Link)("Account Administration", "Maintenance/Account_Admin.asp")
arrayCounter = arrayCounter + 1
Set systemSettingsArray(arrayCounter) = (New url_Link)("Time Approval", "Maintenance/system_Time_Approval.asp")
4

1 回答 1

5

您不能同时创建url_link类名变量名。另外,我看不到您url_link在任何地方初始化对象。必须像这样创建自定义类的实例:

Set linkobj = New url_link

或者像这样,当您有一个返回对对象本身的引用的方法时(在您的情况下Init):

Set linkobj = (New url_link).Init("foo", "bar")

将方法标记为Default允许您省略显式方法调用,因此您可以将上面写为

Set linkobj = (New url_link)("foo", "bar")
于 2013-07-26T18:39:22.883 回答