2016-07-11 4 views
-2

Я прочитал о разнице между обоими: Difference between dot and bracket notationИспользование Javascript .Length с точечной нотации и кронштейном обозначения производят различный результат

Однако, когда я пытаюсь собрать простой пример HTML с использованием JavaScript по умолчанию .Length для обозначения им:

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

Использование точечную нотацию дает мне , потому что он регистрирует в общей сложности 6 массивов из HTML, но когда доходит до кронштейна, почему он дает мне первый html-лист вместо этого?

Рабочий пример здесь: sample code

Обновления: Ok Я только что узнал, что я пропустил кавычки. Он должен быть ["length"] вместо [length]. Вопрос решен.

+0

У вас есть переменная с именем 'length', определенным в этой области? – thefourtheye

+1

Я думаю, вы должны использовать '['length']' вместо '[length]' –

+0

Да, я пропустил кавычки. – Vincent1989

ответ

1

Обозначение квадратной скобки принимает строку . length - переменная. Поскольку вы явно не задали его, it is window.length - это количество кадров в документе (которое должно быть 0, так как вы получаете первый элемент в списке узлов).

Если вы хотите получить доступ к свойству длины, тогда скажите ["length"] и фактически передайте строку.

1

Попробуйте положить «длину» в скобках вместо длины

В основном вы пытаетесь получить доступ к свойству объекта. Здесь объект представляет собой массив, но он работает для других объектов. Вы можете получить доступ к свойству, используя «.propertyName» или используя скобки с ['popertyName']

+0

«объект - это массив» - Нет, это HTMLCollection – Quentin

+0

Да вы правы, но легче понять его как массив, чтобы понять свойство length ^^ Но да, вы правы;) –

0

[] это означает выбор элемента из массива. Кажется, что ваша переменная 'length' определена где-то с 0 значением, поэтому она дает вам первый элемент массива 'li'.

+0

«элемент из массива» - свойство из любого объекта. В этом случае это HTMLCollection, а не массив. – Quentin

+0

@Quentin, вы правы, извините –

 Смежные вопросы

  • Нет связанных вопросов^_^