Welcome to the Treehouse Community
The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

Tim Morgan
9,392 PointsgetElementsByTagName vs querySelectorAll (final challenge from Getting a Handle on the DOM)
Just a recap, I couldn't seem to use the getElementsByTagName('tagName') query, I mean, it should still return a Nodelist. Am I wrong to think this is possible? Any examples?

Umesh Ravji
42,362 PointsIf it's the first part you are having problems with, you may want to look here: https://teamtreehouse.com/community/seems-simple-but-i-cant-get-it

Ashley Carpenter
13,393 PointsI see what you mean.
If you want to return all the elements in the nav using getElementsByTagName, try this:
var navElements = document.getElementsByTagName("nav");
As your nav is the only nav on the page, by using document.getElementsByTagName("nav") you will return the nav.
2 Answers

Steven Parker
220,513 PointsIt takes more than just one tag name to resolve the challenge.
If I understand correctly which challenge you are working on (not the video linked above), it asks you to "select all links in the nav element". The links are the intended targets here, not the nav
itself.
To do that using querySelectorAll, the argument will need to be a descendant selector, naming both the nav element and the link (a) tags, something like this:
let navigationLinks = document.querySelectorAll('nav a');
You can also get the same answer using getElementsByTagName, but you have to call it twice and index it once:
var navElements = document.getElementsByTagName("nav")[0].getElementsByTagName("a");

Lee Zamastil
21,628 PointsIndeed. I solved the challenge but it occurred to me that if I hadn't remembered my CSS then I wouldn't have found the solution. This is a reminder that all these languages can (and sometimes must) work together.

Tim Morgan
9,392 PointsI was just working on that very concept (proper tag name usage and targeting). Reasons aside (I wanted to try various methods to get the same results), it was baffling me why I couldn't target the link tags properly. I didn't think about chaining (or calling twice) the getElementsByTagName! Thank you so much. It was undermining my understanding, but that was a very creative way to get the result AND I now see why querySelectorAll is the preferred method. Thanks for all the help
Ashley Carpenter
13,393 PointsAshley Carpenter
13,393 PointsDid you try:
document.getElementsByTagName("tagName");
getElement... is a method of the document object so you need to specify. If you did this, please can you post some example code as it will make it easier to identify why it's not working for you :)