包含h2,h3时,内部HTML不返回任何内容

时间:2015-09-01 14:28:13

标签: javascript vba innerhtml

我正在尝试浏览网页上的数据,然后将其显示在Excel中以便于阅读,并且数据每天都会更改(它是一夜之间编译的应用程序源)。我正在使用VBA,MS HTML和MS Internet Controls,使用

HTML

<SPAN id="elementname">THIS DATA I WANT</SPAN>

VBA

set ele=htmlDoc.getElementByID("elementname")
clsApplication.whatever=trim(ele.innerHTML)

这样可以正常工作,但是当HTML就像这样

时,innerHTML不会返回任何内容
<SPAN id="elementname"><h2>Element 1</h2><h3>Element 1 data</h3>THIS DATA I WANT</SPAN>

ele.getElementsByTagName("h2").length返回0

我理解它与前面的例子不一样,但似乎无法获得数据。

有人可以提供建议吗?

非常感谢

2 个答案:

答案 0 :(得分:2)

解决方案

innerHtml属性不包含任何内容,您正在寻找innerHTML(区分大小写)(MDN documentation)。

尝试访问ele.innerHTML,它应该可以正常运行。

可能的结构问题

我还建议您仔细检查HTML结构,因为它可能会导致您将来出现一些错误(inline elements不能包含block elements)。

为什么?

  

<强>格式
  默认情况下,块级元素从新行开始。

     

内容模型
  通常,块级元素可以包含内联元素和其他块级元素。这种结构上的区别固有的理念是,块元素会产生更大的&#34;更大的&#34;结构而不是内联元素。

(取自block elements文件)

生成的HTML看起来像这样:

<span></span><h1></h1><h2></h2>text text

所以span 可能 为空,它只取决于浏览器如何构建损坏的HTML文档。

答案 1 :(得分:0)

<span>标记是内联元素,不能包含<h2><h3>等块元素,这意味着HTML标记不正确。