有没有办法迭代IHTMLElementCollection?
,例如
var
e : IHTMLLinkElement;
elementCollection:IHTMLElementCollection;
begin
for e in elementCollection do
showmessage(e.caption);
end;
我知道有一个名为_newEnum的属性,但在delphi中不支持我能理解的内容。
更新: 优秀的链接是IHTMLElement而不是IHTMLLinkElement
答案 0 :(得分:6)
for I := 0 to Pred(elementCollection.length) do
begin
e := elementCollection.item(I, EmptyParam) as IHTMLElement;
//...
end;
答案 1 :(得分:2)
使用_newEnum的代码如下所示。如果您确定集合中只有链接元素项,则可以将内循环的as IHTMLElement
部分(和elem值类型)更改为as IHTMLAnchorElement
(IHTMLLinkElement似乎是某些内容)完全不同)
uses MSHTML, ActiveX;
var
collection:IHTMLElementCollection;
enum:IEnumVariant;
v:OleVariant;
u:IUnknown;
element:IHTMLElement;
begin
//...
enum:=collection._newEnum as IEnumVariant;
while enum.Next(1,v,u)=S_OK do
begin
elem:=u as IHTMLElement;
//...
end;