JavaScript/Finding elements/Exercises

Topic: Locate elements and DOM navigation

We use the following HTML page for the exercises.

<!DOCTYPE html>
<html>
<head>
  <script>
function show() {
  "use strict";
  // ...
}
  </script>
  <style>
    .head_2 {
      display: flex;
      justify-content: center;
    }
    .text, .text_right{
      padding-left: 1em;
      font-size: 1.4em;
    }
    .text_right {
      display: flex;
      justify-content: right;
      padding-right: 1em;
    }
    .button {
      height:1.4em;
      width: 4em;
      margin-top: 1em;
      font-size: 1.2em;
      background-color: Aqua;
    }
  </style>
</head>

<body>
  <h1>An HTML header</h1>

  <h2 class="head_2">An HTML sub-header</h2>
  <div id="div_1">
    <p id="p1" class="text">Paragraph 1</p>
    <ul>
      <li id="one">First item</li>
      <li id="two">Second item</li>
      <li id="three">Third item</li>
    </ul>
    <p id="p2" class="text">Paragraph 2</p>
    <p id="p3" class="text_right">Paragraph 3</p>
  </div>

  <div id="div_2">
    <p id="p4" class="text_right">Paragraph 4</p>
  </div>

  <button class="button" onclick="show()">Go</button>

</body>
</html>



1. Extent the function show in a way that it shows the content of all li elements.

Click to see solution
function show() {
  "use strict";

  const elemArray = document.getElementsByTagName("li");
  for (let i = 0; i < elemArray.length; i++) {
    alert(elemArray[i].innerHTML);
  }
}



2. Extent the function show in a way that it shows the content of all elements of the CSS class text.

Click to see solution
function show() {
  "use strict";

  const elemArray = document.getElementsByClassName("text");
  for (let i = 0; i < elemArray.length; i++) {
    alert(elemArray[i].innerHTML);
  }
  // please note that the third paragraph is not included
}



3. Extent the function show in a way that it shows the content of the second paragraph. Use exclusively getElementsByTagName.

Click to see solution
function show() {
  "use strict";

  // retrieve all 'div'
  const divArray = document.getElementsByTagName("div");
  const firstDiv = divArray[0];
  // navigate again, starting from the first 'div' element
  const pArray = firstDiv.getElementsByTagName("p");
  // show the second 'p' element
  alert(pArray[1].innerHTML);
}