2

我在 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”的元素中的链接中获取标题属性。

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

我不知道我哪里出错了。

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

4

3 回答 3

4

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

var navLinks = nav.getElementsByTagName('a');
for (var i = 0; i < navLinks.length; i++) {
    var link = navLinks[i];
    var title = link.title;
}
于 2011-07-17T21:24:38.370 回答
1

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

当你这样做时:

navLinks[0].getAttribute('title')

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

于 2011-07-17T21:27:06.043 回答
1
var navLinks = nav.getElementsByTagName('a');

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

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

var title = navLinks[0].getAttribute('title');
于 2011-07-17T21:27:46.670 回答