JavaScript DOM Scripting By Example Editing and Filtering Names Fix DOM Manipulation Code

Kabolobari Benakole
Kabolobari Benakole
Pro Student 14,278 Points

I simply don't get it

It feels wrong to me...

const laws = document.getElementsByTagName('li');
const indexText = document.getElementById('boldIndex');
const button = document.getElementById('embolden');

button.addEventListener('click', (e) => {
    const index = parseInt(indexText.value, 10);

    for (let i = 0; i < laws.length; i += 1) {
       let law = laws[i];

       // replace 'false' with a correct test condition on the line below
       if (index === law) {

  = 'bold';
       } else {
  = 'normal';
<!DOCTYPE html>
  <title>Newton's Laws</title>
  <h1>Newton's Laws of Motion</h1>
    <li>An object in motion tends to stay in motion, unless acted on by an outside force.</li>
    <li>Acceleration is dependent on the forces acting upon an object and the mass of the object.</li>
    <li>For every action, there is an equal and opposite reaction.</li>
  <input type="text" id="boldIndex">
  <button id="embolden">Embolden</button>
  <script src="app.js"></script>

2 Answers

Steven Parker
Steven Parker
195,731 Points

Good intuition! You don't want to compare a number (index) with a list item element (law).

Just compare the selected index to the loop variable instead.

Kabolobari Benakole
Kabolobari Benakole
Pro Student 14,278 Points

Interesting, so it's gotta be if(index === i)...? That's a little obfuscating right there. I didn't even thing that law would be returning an li value/content for each li... Well, thanks for pointing me in the right direction.