我有一个可以处理Internet爆炸问题的脚本(例如),我需要循环选择字段,因为4个元素具有相同的ID(在同一页面上),它本身不是问题。
我如何让它遍历4个字段? 我可以让它们更具体吗?
我使用的代码如下:
ie.document.getElementByID("DownloadImage").Click
ie代码如下: 字段1
<a id="DownloadButton" href="javascript:__doPostBack('ctl00$ctl00$MainContent$MainContent$ctl00$declaratiebestandView$RetourInformatieGrid$ctl03$DownloadButton','')">CZ_Specificatie_150005697.pdf</a>
字段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">
然后打开下载屏幕,然后我的代码继续运行(并有效:))
答案 0 :(得分:2)
HTLM中的id
必须是唯一的。如果不是唯一的,则它不是有效的HTML,应予以修复。
HTML4:
http://www.w3.org/TR/html4/struct/global.html
第7.5.2节:
id =名称[CS] 此属性为元素分配名称。此名称在文档中必须是唯一的。
HTML5:
http://www.w3.org/TR/html5/dom.html#the-id-attribute
id属性指定其元素的唯一标识符(ID)。的 值必须在元素的主子树中的所有ID中唯一 并且必须至少包含一个字符。该值不能包含 任何空格字符。
答案 1 :(得分:2)
您可以使用querySelectorAll来收集它们的所有元素,这些元素具有id属性,其值与您所追求的相符。您可以通过索引来区分它们。即使ID重复,此方法也允许您收集它们。但是,您共享的HTML会下载同一文档,因此似乎不需要循环。
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
这会循环所有匹配的元素并单击
根据索引将是特定的,但是如果您熟悉CSS选择器,则可以使用很多方法来指定元素。