JavaScript JavaScript and the DOM Traversing the DOM Sibling Traversal

Vidar Maartensson
Vidar Maartensson
3,687 Points

This was hard, i don´t know how to fix this, got a feeling im close though...

Worked on this for a while and cant seem to figure it out... (sorry in advance for bad naming of varuables)

app.js
var list = document.getElementsByTagName('ul')[0];
var button = document.querySelectorAll ('button');
list.addEventListener('click', function(e) {
  if (e.target.tagName == 'BUTTON') {
    let prevSibling = event.target.parentNode;
    let prevPrev = prevSibling.nextElementSibling;
    let sibling = prevSibling.parentNode;
    prevSibling.insertBefore(prevSibling, prevPrev);
  }
});
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

Victor Mercier
MOD
Victor Mercier
Treehouse Moderator 13,699 Points

Hi Vidar, so let's break down the problem :

The first thing we need to check is if the previous element is a p element. We could do this by doing that :

 if(e.target.previousElementSibling.tagName ==  "P"){

}

The second thing we need to do is give our p a class of highlight if it is a previousSibling of the button :

if(e.target.previousElementSibling.tagName ==  "P"){
       e.target.previousElementSibling.className = "highlight";
}

If that helped you, please mark as best answer to indicate other students your issue is resolved!