Michiel.D
Michiel.D

Reputation: 39

ie getelementsbyID with same ID

i have a script that works with internet explorder (ie) and i need to loop the select fields, that it zelf is no ploblem bu the 4 elements got the same ID (on the same page).

How do i let it loop through the 4 fields? Can i make them more spesified?

the code i use is the following:

ie.document.getElementByID("DownloadImage").Click

The ie code is the following: field 1

<a id="DownloadButton" href="javascript:__doPostBack('ctl00$ctl00$MainContent$MainContent$ctl00$declaratiebestandView$RetourInformatieGrid$ctl03$DownloadButton','')">CZ_Specificatie_150005697.pdf</a>

field 2

<a id="DownloadButton" href="javascript:__doPostBack('ctl00$ctl00$MainContent$MainContent$ctl00$declaratiebestandView$RetourInformatieGrid$ctl03$DownloadButton','')">CZ_Specificatie_150005697.pdf</a><input name="ctl00$ctl00$MainContent$MainContent$ctl00$declaratiebestandView$RetourInformatieGrid$ctl03$DownloadImage" class="inlineButton" id="DownloadImage" type="image" src="../images/download.png" text="CZ_Specificatie_150005697.pdf">

then it opens the download screen, and then my code continue's (and works :) )

Upvotes: 2

Views: 401

Answers (2)

QHarr
QHarr

Reputation: 84465

You can loop them by using querySelectorAll to gather all the elements with an id attribute whose values match what you are after. You can distinguish between them by index. This method will allow you to gather them even though the ids are repeating. However, the HTML you have shared downloads the same document so a loop doesn't seem necessary.

Dim nodeList As Object, i As Long
Set nodeList = ie.document.querySelectorAll("[id=DownloadButton]")
For i = 0 to nodeList.Length-1
    nodeList.item(i).Click
Next

That loops all of the matching elements and clicks

By index will be specific but if you familiarize yourself with CSS selectors there are a vast number of possibilities for specifying an element.

Upvotes: 2

Pᴇʜ
Pᴇʜ

Reputation: 57683

The id in HTLM must be unique. If it is not unique it is no valid HTML and should be fixed.

HTML4:

http://www.w3.org/TR/html4/struct/global.html

Section 7.5.2:

id = name [CS] This attribute assigns a name to an element. This name must be unique in a document.

HTML5:

http://www.w3.org/TR/html5/dom.html#the-id-attribute

The id attribute specifies its element's unique identifier (ID). The value must be unique amongst all the IDs in the element's home subtree and must contain at least one character. The value must not contain any space characters.

Upvotes: 2

Related Questions