Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

JavaScript JavaScript and the DOM (Retiring) Getting a Handle on the DOM Practice Selecting Elements

Angela Wolff
Angela Wolff
4,352 Points

Accessing all li elements in nav.

Any pointers on what is wrong with this please? let navigationLinks = document.getElementById("nav").querySelectorAll("li");

js/app.js
let navigationLinks = document.getElementById("nav").querySelectorAll("li");
let galleryLinks;
let footerImages;
index.html
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Nick Pettit | Designer</title>
    <link rel="stylesheet" href="css/normalize.css">
    <link href='http://fonts.googleapis.com/css?family=Changa+One|Open+Sans:400italic,700italic,400,700,800' rel='stylesheet' type='text/css'>
    <link rel="stylesheet" href="css/main.css">
    <link rel="stylesheet" href="css/responsive.css">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
  </head>
  <body>
    <header>
      <a href="index.html" id="logo">
        <h1>Nick Pettit</h1>
        <h2>Designer</h2>
      </a>
      <nav>
        <ul>
          <li><a href="index.html" class="selected">Portfolio</a></li>
          <li><a href="about.html">About</a></li>
          <li><a href="contact.html">Contact</a></li>
        </ul>
      </nav>
    </header>
    <div id="wrapper">
      <section>
        <ul id="gallery">
          <li>
            <a href="img/numbers-01.jpg">
              <img src="img/numbers-01.jpg" alt="">
              <p>Experimentation with color and texture.</p>
            </a>
          </li>
          <li>
            <a href="img/numbers-02.jpg">
              <img src="img/numbers-02.jpg" alt="">
              <p>Playing with blending modes in Photoshop.</p>
            </a>
          </li>
        </ul>
      </section>
      <footer>
        <a href="http://twitter.com/nickrp"><img src="img/twitter-wrap.png" alt="Twitter Logo" class="social-icon"></a>
        <a href="http://facebook.com/nickpettit"><img src="img/facebook-wrap.png" alt="Facebook Logo" class="social-icon"></a>
        <p>&copy; 2016 Nick Pettit.</p>
      </footer>
    </div>
  <script src="js/app.js"></script>
  </body>
</html>

2 Answers

Jennifer Nordell
seal-mask
STAFF
.a{fill-rule:evenodd;}techdegree
Jennifer Nordell
Treehouse Teacher

Hi there, Angela Wolff! As Tim Strand pointed out, you are attempting to select an item with the id="nav", but no such thing exists in the HTML at this point. I do like your thought about chaining the selectors together :smiley: However, Tim's suggestion is to alter the HTML so that the nav element has the ID of "nav", but any changes to the HTML will cause the challenge to fail. He is also correct in that the challenge asks you to select the links, which are represented by anchor tags or <a>, but you've attempted to select the list items <li>. Also note, that there are additional ways to solve this challenge that were not mentioned in the other answer.

Earlier today, I left an answer on this exact question with three separate ways to solve this challenge, although, personally, I'm partial to the second one in that list as it does not contain a querySelector. Query selectors are great for truly tricky navigation, but because of the additional parsing that the browser does under the hood can have a slight performance cost.

You can view the answer I left earlier today here

Hope this helps! :sparkles:

Angela Wolff
Angela Wolff
4,352 Points

Thanks, thats really helpful.

Tim Strand
Tim Strand
22,458 Points

In order to select all the links (<a>) you would want to replace your li with a

Tim Strand
Tim Strand
22,458 Points

i see a down vote with no explanation.. always helpful. I will assume thats because i didnt correct the fact that you are selecting with getElementById but didnt add an id to your nav element: 1) add id="nav" to your nav element 2) switch to document.getElementsByTagName('nav')[0].querySelector('a'); either one of these will work. Personally i would opt for 1 because that is specific. If you go with 2 and in the future another nav element gets added this function would probably not work as expected.

Angela Wolff
Angela Wolff
4,352 Points

Thanks for the additional clarification which makes a lot of sense to me. It wasn't me who gave you a down vote - that would seem a bit mean given you've taken the time to try and help. I will give you an upvote to nullify it.