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)
您不能同时创建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)