Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Get the children of a div element

I have created a chess board using a table element and I want to get all the divs so I can see it printed in the console

Since there are 64 squares I want to see them all listed in the the console so I can make an array from it, but what I get instead is HTMLCollection [div#id, id: div#id] . How could i get it to console out all the elements in it?

let div = document.getElementsByClassName('board')
div[0].setAttribute('id', 'divid')
let divId = document.getElementById('divid')

var table = document.createElement("div");
table.id = 'id'
let id=0;
for (var i = 1; i < 9; i++) {
  var tr = document.createElement('tr');
  for (var j = 1; j < 9; j++) {
    var td = document.createElement('td');
    id++
    td.id = id
    if (i % 2 == j % 2) {
      td.className = "white";
    } else {
      td.className = "black";
    }
    tr.appendChild(td);
  }

  table.appendChild(tr);
}

divId.appendChild(table)

console.log(divId.children)
<div class="board"></div>

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

>Solution :

Why div and tr?

This makes more sense.

Also I give the cells the proper chess ID

const hor = "ABCDEFGH";
const table = document.getElementById("board");
let id = 0;

for (let i = 0; i < 8; i++) {
  let tr = document.createElement('tr');
  for (let j = 0; j < 8; j++) {
    let row = hor[j];
    let cell = 8-i
    let td = document.createElement('td');
    td.id = `${row}${cell}`
    // td.textContent = td.id
    td.className = (i % 2 == j % 2) ? "white" : "black";
    tr.appendChild(td);
  }
  table.appendChild(tr);
}
const arr = table.querySelectorAll('td');

// set A4 to red
document.getElementById('A4').classList.toggle('red'); 

// set the 16th entry to blue (JS array start at 0)
document.getElementById(arr[15].id).classList.toggle('blue'); 

// pawn to E4
//document.getElementById("E4").classList.toggle('pawn'); // not implemented yet here
document.getElementById("E4").innerHTML = `<i class="fas fa-chess-pawn" style="font-size:24px" aria-hidden="true"></i>`


console.log(JSON.stringify([...arr].map(cell => cell.id)))
table {
  border: 1px solid black;
  border-collapse: collapse;
}

#board td {
  height: 50px;
  width: 50px;
}

.white {
  background-color: white;
  color: black;
  text-align: center;
  /* vertical-align: top; */
}

.black {
  background-color: black;
  color: white;
  text-align: center;
/*  vertical-align: top; */
}

.red {
  background-color: red;
}

.blue {
  background-color: blue;
}
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.9.0/css/all.min.css"  />

<table>
  <tbody id="board"></tbody>
</table>
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading