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

isaiah carter
isaiah carter
4,745 Points

In this challenge, you're going to select various elements from index.html. First, select all links inside the <nav> ele

In this challenge, you're going to select various elements from index.html. First, select all links inside the <nav> element and assign them to the variable navigationLinks. (HINT: Use a descendant selector to match elements that are descendants of an element.)

js/app.js
var navigationLinks = document.querySelector("nav.li");
var galleryLinks;
var 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>

Have a blessed day.

5 Answers

Emmanuel C
Emmanuel C
10,635 Points

The task is asking you to select ALL of specific elements. That would require the use of document.querySelectorAll(); Also to reach decedent nodes, youll need to seperate them with whitespace, instead of dot. So the fist challenge, would be

var navigationLinks = document.querySelectorAll("nav a");

All links(a) within the nav tag.

What does "a" do, does "a" mean all, so if you wanted to select all of something you could just type the "thing" and then "a." Say I wanted to select all links inside an unordered list with the ID gallery and assign them to the variable galleryLinks. then would I just do: let galleryLinks = document.quertySelectorAll("#gallery a"); Would this work?

Thank you, have a blessed day.

Martin Jones
seal-mask
.a{fill-rule:evenodd;}techdegree seal-36
Martin Jones
Front End Web Development Techdegree Graduate 43,232 Points

Hi Isaiah,

First of all you need to get all of the links, so just update the code to use querySelectorAll.

Next, you can then use the CSS Descendant Selector to target the elements you want to grab.

Your updated code will then look like that below, hope this helps.

var navigationLinks = document.querySelectorAll("nav li a");
Mary Gertrude Lie-Nielsen
seal-mask
.a{fill-rule:evenodd;}techdegree
Mary Gertrude Lie-Nielsen
Full Stack JavaScript Techdegree Student 5,144 Points

this was helpful, for some reason I thought: var navigationLinks = document.querySelectorAll("nav > li a") was the answer since <li> and <a> are descendants of <nav>. Any reason why this does not work?

I'm also curious what does the "a" mean in the code block above? 'nav li a'

var navigationLinks = document.querySelectorAll("nav li a");

It's the "a" before "href" --- I believe "a" means a link is coming?

<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>

Eugene Skom
Eugene Skom
6,059 Points

It was helpful,thanks!

Nurgul Amat
seal-mask
.a{fill-rule:evenodd;}techdegree seal-36
Nurgul Amat
Front End Web Development Techdegree Graduate 21,454 Points

let navigationLinks=document.querySelectorAll('nav a'); let galleryLinks=document.querySelectorAll('#gallery li a'); let footerImages=document.querySelectorAll('footer img');