getAttribute初学者Javascript错误

时间:2011-07-17 21:23:27

标签: javascript getattribute

我在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');

我想从ID为'nav'的元素中的链接中获取title属性。

每当我查看调试器时,它都会告诉我Object #<NodeList> has no method 'getAttribute'

我不知道我哪里出错了。

navLinks的nodetype和nodevalue以未定义的形式返回,我认为这可能是问题的一部分,但我对此很新,我真的不知道。

3 个答案:

答案 0 :(得分:4)

getElementsByTagName方法返回一个对象数组。因此,您需要遍历此数组以获取单个元素及其属性:

var navLinks = nav.getElementsByTagName('a');
for (var i = 0; i < navLinks.length; i++) {
    var link = navLinks[i];
    var title = link.title;
}

答案 1 :(得分:1)

调用nav.getElementsByTagName('a')会返回对象列表。该列表没有getAttribute()方法。你必须在一个对象上调用它。

当你这样做时:

navLinks[0].getAttribute('title')

然后它应该工作 - 你将获得第一个匹配元素的标题。

答案 2 :(得分:1)

var navLinks = nav.getElementsByTagName('a');

getElementsByTagName返回多个元素(因此Elements),因为一个页面上可能有多个元素具有相同的标记名称。 NodeList(由getElementsByTagName返回的节点集合)没有getAttribute方法。

您需要访问实际需要的元素的属性。我的猜测是,这将是你找到的第一个元素。

var title = navLinks[0].getAttribute('title');