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.

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,837 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
220,415 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
220,415 Points

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