我需要创建一个动态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
说该对象是必需的。
我应该怎么做才能实现目标并摆脱错误?
答案 0 :(得分:0)
您通过数组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可能为null。所以你循环4次(如果你没有错误第一次)在一个不存在的东西上调用一个属性。
答案 1 :(得分:0)
实际上@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
我希望这可以帮助那些人。
欢呼......