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) Traversing the DOM Sibling Traversal

what's the right answer?

what is the correct solution?

app.js
const list = document.getElementsByTagName('ul')[0];

list.addEventListener('click', function(e) {
  if (e.target.tagName == 'BUTTON') {
    list.previousElementSibling.className('highlight');
  }
});
index.html
<!DOCTYPE html>
<html>
    <head>
        <title>JavaScript and the DOM</title>
    </head>
    <link rel="stylesheet" href="style.css" />
    <body>
        <section>
            <h1>Making a Webpage Interactive</h1>
            <p>Things to Learn</p>
            <ul>
                <li><p>Element Selection</p><button>Highlight</button></li>
                <li><p>Events</p><button>Highlight</button></li>
                <li><p>Event Listening</p><button>Highlight</button></li>
                <li><p>DOM Traversal</p><button>Highlight</button></li>
            </ul>
        </section>
        <script src="app.js"></script>
    </body>
</html>

1 Answer

Steven Parker
Steven Parker
231,271 Points

The className of an element is not a method you can call.

But it is a property you can assign a value to. ("...className = value").

as far as i know it is a method you can call. see: https://teamtreehouse.com/library/changing-element-attributes

Steven Parker
Steven Parker
231,271 Points

At about 0:54 in that video, there is an example of it being used as a property. When "input.className" is entered into the console, without parentheses, the current value is returned. Is there another place in the video where you believe you saw it being used as a method instead?

I ended up doing this and it worked. let p = e.target.previousElementSibling p.className = "highlight";

Steven Parker
Steven Parker
231,271 Points

You probably didn't actually put that "p" between previousElementSibling and className, but otherwise, that's exactly what I was suggesting. Good job. :+1:

thanx for the help