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

How can I generate horizontal JavaScript numbers so that they correspond to the days of the month

This can write out the number vertically but not horizontal and it doesn’t give the 7 14 21 28 number breaks

const getDay = document.getElementById('days');
const getWeek = document.getElementById('week');
getWeek.innerHTML = '<tr><th>H</th><th>K</th><th>Sz</th><th>Cs</th><th>P</th><th>Sz</th><th>V</th></tr>';
for (let i = 1; i < 32; i++) {
  getDay.innerHTML += ' <tr><td id="' + i + 'day" class="days" onclick="open' + i + '()">' + i + '</td>';

  if (i == 7) {
    getDay.innerHTML += '</tr>';
  }
  if (i == 14) {
    getDay.innerHTML += '<tr></tr>';
  }
  if (i == 21) {
    getDay.innerHTML += '<tr></tr>';
  }

  if (i == 28) {
    getDay.innerHTML += '<tr></tr>';
  }
}
<table>
  <thead id="week"></thead>
  <tbody id="days"></tbody>
</table>

>Solution :

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

You cannot add tags without end tags to innerHTML. The browser immediately closes the tag

Also you pushed the tr’s in the wrong order. Close first, then open

Lastly use an eventListener on the tbody to handle the clicks

const open = dayNum => {
  console.log(dayNum);
};
const getDay = document.getElementById('days');
const getWeek = document.getElementById('week');
getWeek.innerHTML = '<tr><th>H</th><th>K</th><th>Sz</th><th>Cs</th><th>P</th><th>Sz</th><th>V</th></tr>';
const dayArr = ['<tr>']; // start with a open row
for (let i = 1; i < 32; i++) {
  dayArr.push('<td id="' + i + 'day" class="days">' + i + '</td>');
  if (i % 7  == 0) dayArr.push('</tr><tr>'); // close and open the row
}
getDay.innerHTML = dayArr.join('');
getDay.addEventListener("click", (e) => {
  const tgt = e.target.closest('td'); // we clicked a cell
  if (!tgt) return; // leave if not a cell
  open(tgt.textContent);
})
<table>
  <thead id="week"></thead>
  <tbody id="days"></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