2016-07-11 29 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你是对的,对不起 –

相关问题