JavaScript JavaScript and the DOM Traversing the DOM Sibling Traversal

Shoaib Khan
Shoaib Khan
Front End Web Development Techdegree Student 9,746 Points

I am trying to get this JavaScript code to parse for this challenge. Please Help.

I have attached the code that I have written, and I can't seem to get the code right can you please help. Please refer to the challenge for details.

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

list.addEventListener('click', function(e) {
  if (e.target.tagName == 'BUTTON') {
    let p = document.getElementsByTagName('button').previousElementSibling;
    p.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

KRIS NIKOLAISEN
PRO
KRIS NIKOLAISEN
Pro Student 50,936 Points

getElementsByTagName() returns a collection. You want just the button element that was clicked which can be referenced as e.target.

Shoaib Khan
Shoaib Khan
Front End Web Development Techdegree Student 9,746 Points

Thanks a lot Kris! I was able to figure it out. You have to use e.target.previousElementSibling.

Here is the code that I used to figure it out.

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

list.addEventListener('click', function(e) {
  if (e.target.tagName == 'BUTTON') {
    let p = e.target.previousElementSibling;
    p = p.className = 'highlight';
  }
});

Thanks

Shoaib K. Khan