将对象数组传递给 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 意味着第一次通过 ArrArrEL(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

我希望这对外面的人有所帮助。

干杯...