getAttribute 的初学者 Javascript 错误

发布于 2024-11-24 13:11:20 字数 595 浏览 2 评论 0原文

我在 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 #没有方法 'getAttribute'

我不知道哪里出了问题。

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

I've searched quite a bit on both google and stackoverflow, but a lack of knowledge on how to ask the question (or even if I'm asking the right question at all) is making it hard to find pertinent information.

I have a simple block of code that I am experimenting with to teach myself 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');

I want to grab the title attribute from the links in the element with the ID 'nav'.

Whenever I look at the debugger, it tells me that Object #<NodeList> has no method 'getAttribute'

I have no idea where I'm going wrong.

The nodetype and nodevalue for navLinks comes back as undefined, which I believe may be part of the problem, but I'm so new to this that I honestly have no idea.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

风蛊 2024-12-01 13:11:20

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

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

The getElementsByTagName method returns an array of objects. So you need to loop through this array in order to get individual elements and their attributes:

var navLinks = nav.getElementsByTagName('a');
for (var i = 0; i < navLinks.length; i++) {
    var link = navLinks[i];
    var title = link.title;
}
深海夜未眠 2024-12-01 13:11:20

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

当你这样做时:

navLinks[0].getAttribute('title')

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

Calling nav.getElementsByTagName('a') returns list of objects. And that list doesn't have getAttribute() method. You must call it on ONE object.

When you do:

navLinks[0].getAttribute('title')

then it should work - you will get title of the first matched element.

巡山小妖精 2024-12-01 13:11:20
var navLinks = nav.getElementsByTagName('a');

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

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

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

getElementsByTagName returns multiple elements (hence Elements), because there can be multiple elements on one page with the same tag name. A NodeList (which is a collection of nodes as returned by getElementsByTagName) does not have a getAttribute method.

You need to access the property of the element that you actually need. My guess is that this will be the first element you find.

var title = navLinks[0].getAttribute('title');
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文