JavaScript JavaScript and the DOM Getting a Handle on the DOM Selecting Multiple Elements

Kipaya Kapiga
Kipaya Kapiga
6,066 Points

Getting error despite right outcome

When I preview my code, each list item is in a different text color, matching what's in the color array. But when I check my work, I get error messages. Here's what I did:

I removed the id attribute from the ul tag, and added a class element to each li element, setting the value to "rainbow"

Here's the script:

let listItems = document.getElementsByClassName('rainbow'); const colors = ["#C2272D", "#F8931F", "#FFFF01", "#009245", "#0193D9", "#0C04ED", "#612F90"];

for (let i = 0; i < colors.length; i ++) { listItems[i].style.color = colors[i];
}

index.html
<!DOCTYPE html>
<html>
  <head>
    <title>Rainbow!</title>
  </head>
  <body>
    <ul>
      <li class="rainbow">This should be red</li>
      <li class="rainbow">This should be orange</li>
      <li class="rainbow">This should be yellow</li>
      <li class="rainbow">This should be green</li>
      <li class="rainbow">This should be blue</li>
      <li class="rainbow">This should be indigo</li>
      <li class="rainbow">This should be violet</li>
    </ul>
    <script src="js/app.js"></script>
  </body>
</html>
js/app.js
let listItems = document.getElementsByClassName('rainbow');
const colors = ["#C2272D", "#F8931F", "#FFFF01", "#009245", "#0193D9", "#0C04ED", "#612F90"];

for (let i = 0; i < colors.length; i ++) {
  listItems[i].style.color = colors[i];    
}

2 Answers

Martin Jones
Martin Jones
Front End Web Development Techdegree Graduate 41,143 Points

This does work, however the challenge is to get all of the list items that are children of the element with the ID of #rainbow.

The code below will achieve this:

let listItems = document.querySelectorAll('#rainbow li');
const colors = ["#C2272D", "#F8931F", "#FFFF01", "#009245", "#0193D9", "#0C04ED", "#612F90"];

for(var i = 0; i < colors.length; i ++) {
  listItems[i].style.color = colors[i];    
}

The video before the challenge should cover this as well: https://teamtreehouse.com/library/using-css-queries-to-select-page-elements