JavaScript JavaScript and the DOM Traversing the DOM Sibling Traversal

David Loder
David Loder
4,640 Points

Hey everyone, gave it a whirl. But kinda stuck selecting the <p> element to be highlighted. Any thoughts?

So with this code I have to select the <p> element before the <button> element with using the previousElementSibling. I tried to use a similar script in the last lesson but can't seem to get it. Any thoughts?

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 prevLi = li.previousElementSibling;
      let ul = li.parentNode;
    }
  }
});
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 class="highlight">Element Selection</p><button>Highlight</button></li>
                <li><p class="highlight">Events</p><button>Highlight</button></li>
                <li><p class="highlight">Event Listening</p><button>Highlight</button></li>
                <li><p class="highlight">DOM Traversal</p><button>Highlight</button></li>
            </ul>
        </section>
        <script src="app.js"></script>
    </body>
</html>

1 Answer

KRIS NIKOLAISEN
KRIS NIKOLAISEN
54,333 Points

Some hints:

  • You won't be checking the class name. You will be setting it.
  • If e.target.tagName == 'BUTTON' then e.target is the button. <p> is the previous element sibling of this.
  • Once you have p then you can set the class with p.className = 'highlight'