2011-04-11 105 views
1

我有HTML的东西,如在节点的子树中查找DOM节点?

<div class="foo"> 
<h1>foo 1</h1> 
..</div> 

<div class="foo"> 
<h1>foo 2</h1> 
..</div> 

查找使用的getElementsByTagName( 'DIV')的DIV节点是没有问题的。

在迭代div节点时,我需要在DIV 节点的子树内找到第一个H1。 DOM节点上是否有类似getElementByTagName()的东西?

+0

或者:'document.querySelectorAll('div.foo> h1')' – 2011-04-11 18:30:37

+0

@ŠimeVidas:如果他只需要第一个匹配节点,那么使用'querySelector'而不是'querySelectorAll'可能会更好一些。 – 2011-04-11 18:35:13

+0

@CD OP对DIV节点进行迭代,每次迭代他需要H1元素 - 因此他需要所有的H1元素。 – 2011-04-11 18:38:18

回答

5

号使用数组符号来获得发现的第一个元素:

var firstHeading = div.getElementsByTagName('h1')[0]; 

编辑如果你问,如果你能在除document其他节点使用getElementsByTagName,是的,你可以。所有DOM元素节点加上document节点都有getElementsByTagName方法。

+1

我想他实际上是问你是否可以在文档以外的东西上调用.getElementsByTagName,比如你的例子中的div。至少,我认为他是? – Robert 2011-04-11 18:20:39

+0

@Robert:OP询问是否有DOM元素的getElementByTagName(单数)方法。 – 2011-04-11 18:21:45

+0

我的错误 - 我试过,但在我的代码中有一个错字。谢谢 – 2011-04-11 18:29:02