JavaScript JavaScript and the DOM Traversing the DOM Sibling Traversal

Ozaveshe Balogun
Ozaveshe Balogun
4,898 Points

Hi lovely people. Please I am unable to correctly answer the question correctly. I tried using the code below.

var list = document.getElementsByTagName('ul')[0];

list.addEventListener('click', function(e) { if (e.target.tagName == 'BUTTON') { if (e.target.className=="highlight"){ let li=e.target.parentNode; let preLi=li.previousElementSibling; let ul=li.parentNode;

if (preLi){
ul.insertBefore(li, preLi);
}

}} });

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

list.addEventListener('click', function(e) {
  if (e.target.tagName == 'BUTTON') {
    if (e.target.className=="highlight"){
    let li=e.target.parentNode;
    let preLi=li.previousElementSibling;
    let ul=li.parentNode;

    if (preLi){
    ul.insertBefore(li, preLi);
    }
  }}
});
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 class='highlight'>Highlight</button></li>
                <li><p>Events</p><button class='highlight'>Highlight</button></li>
                <li><p>Event Listening</p><button class='highlight'>Highlight</button></li>
                <li><p>DOM Traversal</p><button class='highlight'>Highlight</button></li>
            </ul>
        </section>
        <script src="app.js"></script>
    </body>
</html>

1 Answer

Steven Parker
Steven Parker
195,547 Points

You're working too hard! The challenge can be solved with a single statement placed on the blank line in the originally provided code. Here's a few hints:

  • the paragraph is a sibling of the button
  • you won't need to reference or traverse to the parent node
  • you don't need to insert or otherwise create any new element(s)
  • you won't need any new conditional statement(s)
  • you only need to set the class name on the paragraph element