Ошибка JavaScript начинающего с getAttribute - PullRequest
2 голосов
/ 18 июля 2011

Я довольно много искал как в Google, так и в stackoverflow, но отсутствие знаний о том, как задать вопрос (или даже если я задаю правильный вопрос вообще), затрудняет поиск подходящей информации.

У меня есть простой блок кода, с которым я экспериментирую, чтобы научить себя JavaScript.

var studio = document.getElementById('studio');
var contact = document.getElementById('contact');
var nav = document.getElementById('nav');
var navLinks = nav.getElementsByTagName('a');

var title = navLinks.getAttribute('title');

Я хочу получить атрибут title из ссылок в элементе с идентификатором 'nav'.

Всякий раз, когда я смотрю на отладчик, он говорит мне, что Object #<NodeList> has no method 'getAttribute'

Понятия не имею, куда иду не так.

Тип узла и значение узла для navLinks возвращаются как неопределенные, что, я думаю, может быть частью проблемы, но я настолько новичок в этом, что, честно говоря, понятия не имею.

Ответы [ 3 ]

4 голосов
/ 18 июля 2011

Метод getElementsByTagName возвращает массив объектов.Так что вам нужно пройти через этот массив, чтобы получить отдельные элементы и их атрибуты:

var navLinks = nav.getElementsByTagName('a');
for (var i = 0; i < navLinks.length; i++) {
    var link = navLinks[i];
    var title = link.title;
}
1 голос
/ 18 июля 2011
var navLinks = nav.getElementsByTagName('a');

getElementsByTagName возвращает несколько элементов (следовательно, Elements), поскольку на одной странице может быть несколько элементов с одинаковым именем тега. У NodeList (который является набором узлов, возвращаемых getElementsByTagName) нет метода getAttribute.

Вам необходимо получить доступ к свойству элемента, который вам действительно нужен. Я предполагаю, что это будет первый элемент, который вы найдете.

var title = navLinks[0].getAttribute('title');
1 голос
/ 18 июля 2011

Вызов nav.getElementsByTagName('a') возвращает список объектов.И этот список не имеет метода getAttribute ().Вы должны вызвать его на одном объекте.

Когда вы выполните:

navLinks[0].getAttribute('title')

, тогда это должно сработать - вы получите название первого соответствующего элемента.

...