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 trialBarry Ort
12,373 Pointswhat's the right answer?
what is the correct solution?
const list = document.getElementsByTagName('ul')[0];
list.addEventListener('click', function(e) {
if (e.target.tagName == 'BUTTON') {
list.previousElementSibling.className('highlight');
}
});
<!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
231,269 PointsThe className
of an element is not a method you can call.
But it is a property you can assign a value to. ("...className = value
").
Barry Ort
12,373 PointsBarry Ort
12,373 Pointsas far as i know it is a method you can call. see: https://teamtreehouse.com/library/changing-element-attributes
Steven Parker
231,269 PointsSteven Parker
231,269 PointsAt 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?Barry Ort
12,373 PointsBarry Ort
12,373 PointsI ended up doing this and it worked. let p = e.target.previousElementSibling p.className = "highlight";
Steven Parker
231,269 PointsSteven Parker
231,269 PointsYou probably didn't actually put that "p" between previousElementSibling and className, but otherwise, that's exactly what I was suggesting. Good job.
Barry Ort
12,373 PointsBarry Ort
12,373 Pointsthanx for the help