2017-03-01 126 views
1
<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

回答

1

因爲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

0

您必須指定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>

1

請檢查這些方法的文檔。其清楚地說

返回與指定標籤名的文件中的所有元素的集合,作爲一個NodeList對象的getElementsByTagName()方法。

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

所以應該

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