name 是 olevariant 类型的,直接传 widestring 类型的变量或者给 OleVariant 变量赋个数字表示下标
index 直接传0就行。
var name:olevariant;
begin
name := 0;
doc2.getElementsByTagName('h3').item(name,0) ;
end;

解决方案 »

  1.   

    这样可以,但是我觉得这个真的不科学,而且很麻烦。比如
    doc2.getElementsByTagName('h3').item(name,0) ; 这一句应该是第一个h3标签下的第一元素吧?
    但是你 doc2.getElementsByTagName('h3').item(name,0).tagName;可以看到仍然是h3!!!
    还有,比如我想得到h3标签下A标签的href属性,假设A标签是h3下面的第一个元素
    doc2.getElementsByTagName('h3').item(name,0).getAttribute('href',0)结果你发现是空的!
    mshtml怎么会这么麻烦,你看看是怎么回事也?
      

  2.   

    细节决定成败啊,getElementsByTagName是返回所有 H3的数组,用 item 取出来当然就是其中一个 H3标签!!
    procedure TForm1.Button1Click(Sender: TObject);
    var
        doc : IHTMLDocument3;
        h : ihtmlelement;
        a : IHTMLAnchorElement;
    begin
        try
            doc := WebBrowser1.Document as IHTMLDocument3;
            h := doc.getElementsByTagName('H3').item(0,0) as IHTMLElement;
            a := (h.all as IHTMLElementCollection).item(0, 0) as IHTMLAnchorElement;
            ShowMessage(a.href);
        except    end;
    end;
      

  3.   


    好心的大哥~你又让我看到了希望!但是按照你这个方法报错了怎么办,报这个错
    interface not supported
    另外我想和你多学习学习,能给个QQ或者邮箱么
      

  4.   


    我的html结构是这样 
    <li>  <h3> <a href=''> </a> </h3> <li> 
    当然还有其他的  我想遍历每一个元素 delphi代码如下var doc:IHTMLDocument3; //document文档
        title:String;  //网址、标题、内容、来源等
        li : IHTMLElement; //li标签
        h : ihtmlelement;//h标签
        a : IHTMLAnchorElement;//a标签
    begin
    li :=(doc.getElementsByTagName('li').item(0,0) as IHTMLElement);
    h :=(li.all as IHTMLElementCollection).item(0,0) as IHTMLElement;
    title := h.innerText;
    a :=(h.all as IHTMLElementCollection).item(0,0) as IHTMLAnchorElement;//应该是这一句的问题报interface not supported
    end;大哥~看到之后帮我分析下,最好能给个你的联系方式,很多东西要向你学习
      

  5.   


    好心的大哥~你又让我看到了希望!但是按照你这个方法报错了怎么办,报这个错
    interface not supported
    另外我想和你多学习学习,能给个QQ或者邮箱么
    论坛里高人啊