带有动态ID的VBA getElementById

时间:2012-06-15 10:27:26

标签: dom vba getelementbyid

我一直在搜索整个论坛,msdn和专业教程,但我无法找到VBA的答案: 如何使getElementById在访问VBA模块中工作,其中要查找的ID是动态的?

让我们看一下html代码:

<DIV id=rowToolTipContainer>
<DIV class=contactsCard id=resultsTooltip1122286Contents style="DISPLAY: none">
<TABLE class="shadow-box tooltip">
<TBODY>

我是如何找到它的:

Dim ResultDIV As HTMLDivElement   
Set ResultDIV = HTMLDoc.getElementById("resultsTooltip*")

让我说返回的html具有不同的id(数字更改),具体取决于每个结果,因此每个DIV的ID始终为:

id=resultsTooltipxxxxxxxContents其中xxxxxxx总是不同的数字

任何帮助都将受到高度赞赏。

2 个答案:

答案 0 :(得分:4)

尝试类似这样的事情:

Dim ContainerDiv As HTMLDivElement, ResultDIV As HTMLDivElement

Set ContainerDiv = HTMLDoc.getElementById("rowToolTipContainer")
For Each ResultDIV In ContainerDiv.GetElementsByTagName("div")
    If ResultDIV.ID Like "resultsTooltip*Contents" Then

        '' What do you want to do here?

        Exit For
    End If
Next

答案 1 :(得分:0)

  1. 确定始终包含ID的最近的父标记(通过查看HTML手动)。
  2. 枚举该标记的所有后代<div>,使用ID测试其Like属性。