将对象数组传递给 Sub
Passing an array of object to a Sub
我需要创建动态 Sub
。波纹管是我想要实现的示例代码。
'File1.vbs
Sub MainProcess()
Dim arrElements(3)
arrElements(0) = div1
arrElements(1) = div2
arrElements(2) = div3
arrElements(3) = div4
Call InitHtml(arrElements)
End Sub
'file2
Sub InitHtml(arrEl)
Dim arr, count
count = 1
For each arr in arrEl
arr.innerHtml = "number: " & count
count = count + 1
Next
End Sub
但问题是它在这里抛出一个错误arr.innerHtml = "number: " & count
说这个对象是必需的。
我应该怎么做才能实现我的目标并消除错误?
你正在For Each
通过一个数组。 Arr 与 ArrElements(0), ArrElements(1), ..., ArrElements(n)
相同
所以不清楚你在做什么。
正在将 ArrElements 传递给 InitHTML。您在 InitHTML 中调用 ArrElements ArrEL。所以 For Each Arr in ArrEL
意味着第一次通过 Arr
与 ArrEL(0)
相同(与 ArrElement(0)
相同),然后 ArrEL(1) 第二次通过。 Arr 可能为空,因为您正在分配未初始化的变量。所以你循环了 4 次(如果你没有第一次出错)在一个不存在的东西上调用 属性。
实际上@MCND 回答了我的问题。您可以在我的问题的第一条评论下找到@MCND 的回答。他说,如果它是一个对象,就应该有一个集合前缀。我可能弄错了,但它给了我一个想法..
解释一下。
objDiv1,objDiv2,... 是 HTML 中元素的 ID。
我做的是这样的。
'File1.vbs
Sub MainProcess()
Dim arrElements(5)
set arrElements(0) = objDiv1
set arrElements(1) = objDiv2
set arrElements(2) = objDiv3
set arrElements(3) = objDiv4
set arrElements(4) = objDiv5
Call InitHtml(arrElements)
End Sub
有效!
但我也找到了一个解决方案,使用 Array.这是一个示例代码
'File1.vbs
Sub MainProcess()
Dim arrElements
arrElements = Array(objDiv1,objDiv2,objDiv3,objDiv4,objDiv5)
Call InitHtml(arrElements)
End Sub
'file2
Sub InitHtml(arrEl)
Dim count
count = 1
For each obj in arrEl
obj.innerHtml = "number: " & count
count = count + 1
Next
End Sub
我希望这对外面的人有所帮助。
干杯...
我需要创建动态 Sub
。波纹管是我想要实现的示例代码。
'File1.vbs
Sub MainProcess()
Dim arrElements(3)
arrElements(0) = div1
arrElements(1) = div2
arrElements(2) = div3
arrElements(3) = div4
Call InitHtml(arrElements)
End Sub
'file2
Sub InitHtml(arrEl)
Dim arr, count
count = 1
For each arr in arrEl
arr.innerHtml = "number: " & count
count = count + 1
Next
End Sub
但问题是它在这里抛出一个错误arr.innerHtml = "number: " & count
说这个对象是必需的。
我应该怎么做才能实现我的目标并消除错误?
你正在For Each
通过一个数组。 Arr 与 ArrElements(0), ArrElements(1), ..., ArrElements(n)
所以不清楚你在做什么。
正在将 ArrElements 传递给 InitHTML。您在 InitHTML 中调用 ArrElements ArrEL。所以 For Each Arr in ArrEL
意味着第一次通过 Arr
与 ArrEL(0)
相同(与 ArrElement(0)
相同),然后 ArrEL(1) 第二次通过。 Arr 可能为空,因为您正在分配未初始化的变量。所以你循环了 4 次(如果你没有第一次出错)在一个不存在的东西上调用 属性。
实际上@MCND 回答了我的问题。您可以在我的问题的第一条评论下找到@MCND 的回答。他说,如果它是一个对象,就应该有一个集合前缀。我可能弄错了,但它给了我一个想法..
解释一下。
objDiv1,objDiv2,... 是 HTML 中元素的 ID。 我做的是这样的。
'File1.vbs
Sub MainProcess()
Dim arrElements(5)
set arrElements(0) = objDiv1
set arrElements(1) = objDiv2
set arrElements(2) = objDiv3
set arrElements(3) = objDiv4
set arrElements(4) = objDiv5
Call InitHtml(arrElements)
End Sub
有效!
但我也找到了一个解决方案,使用 Array.这是一个示例代码
'File1.vbs
Sub MainProcess()
Dim arrElements
arrElements = Array(objDiv1,objDiv2,objDiv3,objDiv4,objDiv5)
Call InitHtml(arrElements)
End Sub
'file2
Sub InitHtml(arrEl)
Dim count
count = 1
For each obj in arrEl
obj.innerHtml = "number: " & count
count = count + 1
Next
End Sub
我希望这对外面的人有所帮助。
干杯...