<button id="btn">Calibrate</button>
<div id="block" class="tables">
  <table></table>
</div>
#block {
  max-height: 300px;
  overflow: auto;
  border: 3px solid;
}
function calibration() {
  let max_tickets = 1;
  let protect = 0; // Защита от бесконечного выполнения
  let newElems;

  let i = setInterval(function () {
    let block = document.getElementById("block"); // целевой блок

    if (block.scrollHeight > block.clientHeight || ++protect > 1000) {
      clearInterval(i);
      // Удалим последний добавленный, чтобы не было скролла
      newElems.remove();
      console.log(max_tickets-2);
      return;
    }

    newElems = $("<tr>").append(`<td>${max_tickets}</td>`).append("<td>0</td>");
    $(".tables table:first-child").append(newElems);
    
    max_tickets++;
  }, 0);

}

btn.addEventListener("click", (e) => {
  calibration();
});

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

  1. https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js