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

Julien Arseneau
seal-mask
.a{fill-rule:evenodd;}techdegree
Julien Arseneau
Full Stack JavaScript Techdegree Student 5,200 Points

Why is there an error?

It says that there is only one link, not 3.

js/app.js
let navigationLinks = document.getElementsByClassName('selected');
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 class ="selected">
        <ul class ="selected" >
          <li><a href="index.html" class="selected">Portfolio</a></li>
          <li><a href="about.html" class ="selected">About</a></li>
          <li><a href="contact.html" class ="selected">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>

3 Answers

Cooper Runstein
Cooper Runstein
11,850 Points

You added the class selected to element in the html that aren't supposed have that class, so when you select elements by class, you're now not only selecting the element that originally was given the selected class, but also the ul and nav elements that you added the class to.

Steven Parker
Steven Parker
231,236 Points

This exercise is about selecting DOM elements entirely from JavaScript. The HTML code is provided solely for your inspection, you should not make any changes to it.

There are a couple of ways to do this task: one is to chain selector methods together to pick the nav and then pick the links (a) within it; and the other is to use a different kind of selector method that allows CSS-style combined selectors such as a descendant selector.

The nav element does not require a class. You need to the links in side the nav element:

let navigationLinks = document.querySelectorAll("nav a");
Steven Parker
Steven Parker
231,236 Points

I was trying to hint at that without giving it away. :see_no_evil: