的getElementsByTagName()申请两次不工作

问题描述:

<ul id="nav"> 
    Favorite beverages : 
    <li> Tea </li> 
    <li> Coffee </li> 
    <li> Milk </li> 
</ul> 

我想从 'UL'的getElementsByTagName()申请两次不工作

Method 1 : It doesn't work 

var val = document.getElementsByTagName("ul").getElementsByTagName("li"); 
console.log(val.length); 

Method 2 : It works 

var val = document.getElementById("nav").getElementsByTagName("li"); 
console.log(val.length); 

'礼' 的总人数为何方法1不工作?

+0

'document.getElementsByTagName( “UL”)'返回元件的阵列。所以,'getElementsByTagName'不可用。 – Adapter

因为document.getElementsByTagName("ul")返回与给定标记名称的元素的活的HTMLCollection。

的理解:

element.getElementsByTagName("li")是有效的方法。

elements.getElementsByTagName("li")不是一个有效的方法。

var val = document.getElementsByTagName("ul")[0].getElementsByTagName("li"); 
 
console.log(val.length); 
 

 

 
var val = document.getElementById("nav").getElementsByTagName("li"); 
 
console.log(val.length);
<ul id="nav"> 
 
    Favorite beverages : 
 
    <li> Tea </li> 
 
    <li> Coffee </li> 
 
    <li> Milk </li> 
 
</ul>

编辑来获取文本中ul但不li

​​

+0

谢谢Sankar Raj。我还有一个问题,如果需要在“ul”标签中找到文本,而不是在“li”中,应该怎么做。上例中的示例如何找到“最喜欢的饮料:” – WeAreRight

+1

@WeAreRight已更新。核实。 – Sankar

您必须指定index.Try下面的代码:

var val = document.getElementsByTagName("ul")[0].getElementsByTagName("li"); 
 
console.log(val.length);
<ul id="nav"> 
 
\t Favorite beverages : 
 
\t <li> Tea </li> 
 
\t <li> Coffee </li> 
 
\t <li> Milk </li> 
 
</ul>

请检查这些方法的文档。其清楚地说

返回与指定标签名的文件中的所有元素的集合,作为一个NodeList对象的getElementsByTagName()方法。

getElementById()方法返回具有指定值的ID属性的元素。

所以应该

document.getElementsByTagName("ul")[0].getElementsByTagName("li")