VBScript的每个问题

Mar*_*rus 0 arrays vbscript for-loop

我对如何对对象数组进行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
Run Code Online (Sandbox Code Playgroud)

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

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%> 
Run Code Online (Sandbox Code Playgroud)

当我更改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")
Run Code Online (Sandbox Code Playgroud)

Ans*_*ers 5

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

Set linkobj = New url_link
Run Code Online (Sandbox Code Playgroud)

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

Set linkobj = (New url_link).Init("foo", "bar")
Run Code Online (Sandbox Code Playgroud)

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

Set linkobj = (New url_link)("foo", "bar")
Run Code Online (Sandbox Code Playgroud)