Javascript在li标记中获取h2标记并返回它

Javascript在li标记中获取h2标记并返回它,javascript,function,select,element,getelementsbytagname,Javascript,Function,Select,Element,Getelementsbytagname,我想用javascript而不是jquery在li标记中获得一个h2标记。目前这是html: <li vriend="Alvin Heijmans" select=""> <img class="portret" src="img/alvin.png" /> <div class="addbutton"></div> <h2>Alvin Heijmans</h2> <p>U

我想用javascript而不是jquery在li标记中获得一个h2标记。目前这是html:

<li vriend="Alvin Heijmans" select="">
     <img class="portret" src="img/alvin.png" />
     <div class="addbutton"></div>
     <h2>Alvin Heijmans</h2>
     <p>Utrecht</p>
</li>
控制台出现以下错误:

TypeError: elms.getElementsByTagName is not a function
var names = elms.getElementsByTagName('h2');

那么如何解决这个问题呢?

我相信getElementsByTagName将返回一个数组。因此,对于第二次通话,您需要写:

var names = elms[0].getElementsByTagName('h2');
要访问第一个找到的li

Edit2: 您需要使用此选项(通过
for()
循环以捕获页面上的所有
li
h2
):

var elms=document.getElementsByTagName('li'),
名称=[];

对于(var i=0,j=elms.length;i您可以使用
.queryselectoral()

像这样:

var names = document.querySelectorAll('li h2');
它将返回一个节点列表(),其中包含与CSS选择器匹配的所有元素:
li h2


或者,如果您只是查找单个元素,可以使用它返回对与选择器匹配的第一个元素的引用。

返回一个我们在for循环中已经使用过的itration。但是我们仍然会得到错误类型error:elms.getElementsByTagName不是函数,然后在迭代中替换[0]使用增量变量。for(var i=0;i@Daedalus当然“它仍然是一个数组”,我不是说getElementsByTagName返回一个数组吗?
var elms = document.getElementsByTagName('li'),
    names = [];
for (var i = 0, j = elms.length; i<j; i++) {
    names = elms[i].getElementsByTagName('h2');
}
alert(names[0].innerHTML);
var names = document.querySelectorAll('li h2');