2016-07-11 53 views
-2

我看了一下兩者之間的區別: Difference between dot and bracket notation使用JavaScript。長度與點符號和括號來產生不同的結果

然而,當我嘗試用默認的JavaScript。長度指放在一起簡單的HTML例子其中:

<ul id="allList"> 
    <li>a</li> 
    <li>b</li> 
    <li>c</li> 
    <li>d</li> 
    <li>e</li> 
    <li>f</li> 
</ul> 

console.log(document.getElementById("allList").getElementsByTagName("li").length); 
//6 


console.log(document.getElementById("allList").getElementsByTagName("li")[length]); 
//<li>a</li> 

使用點符號是給我,因爲它從HTML登記總6個陣列,但是當涉及到支架,爲什麼它給我第一個html列表而不是?

工作示例這裏: sample code

更新: 好,我才發現,我已經錯過了報價。它應該是[「長度」]而不是[長度]。問題解決了。

+0

您是否在該範圍中定義了名稱爲「length」的變量? – thefourtheye

+1

我想你應該使用'['length']'而不是'[length]' –

+0

是的,我錯過了引號。 – Vincent1989

回答

1

方括號表示法需要字符串length是一個變量。由於您沒有明確設置它,所以it is window.length這是文檔中的幀數(由於您正在獲取節點列表中的第一個元素,因此它必須爲0)。

如果你想訪問length屬性,那麼就說["length"]並且實際上傳遞一個字符串。

1

嘗試把「長」在括號內,而不是長度

基本上您嘗試訪問對象的屬性。這裏的對象是一個數組,但它適用於其他對象。您可以使用「.propertyName」或使用['popertyName']括號來訪問該屬性。

+0

「對象是一個數組」 - 不,這是一個HTMLCollection – Quentin

+0

是你是對的,但更容易看到它作爲一個數組來理解長度屬性^^但是,你是對的;) –

0

[]這意味着從數組中獲取元素。似乎你的'長度'變量是用0值定義的,這就是爲什麼它給你'li'數組的第一個元素。

+0

「來自數組的元素」 - 來自任何類型對象的屬性。在這種情況下,它是一個HTMLCollection,而不是一個數組。 – Quentin

+0

@Quentin你是對的,對不起 –

相關問題