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

Zak Mosbacher
Zak Mosbacher
Full Stack JavaScript Techdegree Student 6,183 Points

Why does this not work?

Why can i not make the laws being cycled through in the if statement figure out if it is the correct index?

app.js
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 (law === index) {

           law.style.fontWeight = 'bold';
       } else {
           law.style.fontWeight = 'normal';
       }
    }
});
index.html
<!DOCTYPE html>
<html>
<head>
  <title>Newton's Laws</title>
</head>
<body>
  <h1>Newton's Laws of Motion</h1>
  <ul>
    <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>
  </ul>
  <input type="text" id="boldIndex">
  <button id="embolden">Embolden</button>
  <script src="app.js"></script>
</body>
</html>

1 Answer

KRIS NIKOLAISEN
PRO
KRIS NIKOLAISEN
Pro Student 40,167 Points

You are comparing an element (node object) to an integer. This will always be false. There is an index though that can be used to identify the law. You are looping with it.

Zak Mosbacher
Zak Mosbacher
Full Stack JavaScript Techdegree Student 6,183 Points

Hi thanks for the answer,i think im having a mind blank or something but i still cant figure this out, instead i made a constant that found the parseInt(law.text) and then i made that equal to the index constant in the if conditional and it still wont work :(.