VBScript For Each问题

时间:2013-07-26 17:21:08

标签: arrays for-loop vbscript

我对如何为一个对象数组执行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")

1 个答案:

答案 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")