开发者问题收集

初学者 Javascript 中 getAttribute 的错误

2011-07-17
7875

我在 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> 没有方法“getAttribute”

我不知道我哪里做错了。

navLinks 的节点类型和节点值返回为未定义,我相信这可能是问题的一部分,但我对此很陌生,老实说,我完全不知道。

3个回答

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

var navLinks = nav.getElementsByTagName('a');
for (var i = 0; i < navLinks.length; i++) {
    var link = navLinks[i];
    var title = link.title;
}
Darin Dimitrov
2011-07-17

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

当您执行:

navLinks[0].getAttribute('title')

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

Radek
2011-07-17
var navLinks = nav.getElementsByTagName('a');

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

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

var title = navLinks[0].getAttribute('title');
lonesomeday
2011-07-17