如何遍历HTML DOM以递归获取每个元素的文本。我只需要获取HTML元素的文本,而无需获得子元素的文本。 考虑是否存在嵌套的HTML元素,然后如何获取第一个元素的文本,以消除嵌套的子元素和相应的文本。
我尝试了“ elem.InnerHTML ”,“ elem.InnerTEXT ”,“ elem.TextContent ”,但这些似乎都在恢复来自所有嵌套元素的文本。
代码示例: 我的HTML如下:
<HTML>
<HEAD></HEAD>
<BODY>
<DIV> SOMEDIVTEXT
<TABLE>
<TBODY>
<TR><TD>COLUMN1</TD></TR>
<TR><TD>COLUMN2</TD></TR>
</TBODY>
</TABLE>
</DIV>
</BODY>
</HTML>
我只需要在当前节点指针位于DIV时提取 SOMEDIVTEXT ,而无需获取嵌套子代的文本。
答案 0 :(得分:0)
答案 1 :(得分:0)
好吧,所以假设(1)您正在浏览器中编写Javascript,以及(2)您已将元素作为对象(您在问题中提到了“ elem”,所以我想您已经知道了吗?),那么您可以使用elem.childNodes()
获取元素的子元素。
这将为您提供一个Nodelist
对象,其中包含该元素内的每个节点。对于您在问题中引用的HTML,它将是两个节点。第一个是包含文本SOMEDIVTEXT
的文本节点,第二个是包含<TABLE>
元素的元素节点。
因此elem.childNodes[0]
将获得您尝试提取的文本。
但是DOM非常灵活,因此还有其他一些属性和方法也可以达到相同的效果,包括另一个答案中提到的'elem.firstChild'。