2012-06-15 2 views
2

Я искал весь этот форум, msdn и специализированные учебные пособия, и я не могу найти ответ для VBA: Как сделать работу getElementById в модуле доступа VBA, где идентификатор динамична?VBA getElementById с динамическим 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 возвращается имеет другой идентификатор (число меняется) в зависимости по каждому результату, так что идентификатор для каждого DIV всегда:

id=resultsTooltipxxxxxxxContents где xxxxxxx всегда разные номера

Любая помощь будет высоко оценена.

ответ

0
  1. Определите ближайший родительский тег, который всегда содержит идентификатор (вручную, взглянув на ваш HTML).
  2. Перечислите всех потомков <div> s этого тега, проверяя их ID с Like.
+0

Спасибо за ваш ответ, но не уверен, если я вас понимаю: идентификатор содержится только внутри указанного DIV ... Я думаю, что ваша идея, чтобы получить родительский тег, а затем перечислять теги div потомка, как вы упоминаете, не так ли? – indi

4

Try что-то вроде этого:

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 
+0

Хорошо, вот что я думал, что вы предлагаете. Я вернусь к вам, как только проведу это. Большое спасибо, Прадип. – indi

+1

Просто, чтобы вы знали, что все работает отлично и плавно. Большое спасибо. – indi

+0

+ 1 Хороший один прайдеп :) –

Смежные вопросы