我在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以未定义的形式返回,我认为这可能是问题的一部分,但我对此很新,我真的不知道。
答案 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');