我对如何为一个对象数组执行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
时,我收到此错误:
无效的程序调用或参数“link”
创建对象并填充数组的代码:
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")
答案 0 :(得分: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")