Проблема в том, что вам нужно поместить имя пользователя и кнопку внутри созданных вами плавающих элементов div, тогда как вы поместили их в ту же ячейку, что и элемент div, но на том же уровне, что и элементы div. .
Попробуйте изменить этот раздел:
cell1.appendChild(leftDiv);
cell1.appendChild(user_name); //Add name to row
cell1.appendChild(rightDiv);
cell1.appendChild(details_btn); //Add button to row
row.appendChild(cell1); //Add row to table
tabbody.appendChild(row);
к этому:
leftDiv.appendChild(user_name); // Add name to left div
rightDiv.appendChild(details_btn); // Add button to right div
cell1.appendChild(leftDiv);
cell1.appendChild(rightDiv);
row.appendChild(cell1); //Add row to table
tabbody.appendChild(row);
Кроме того, если будет добавлено более 1 строки, div получит повторяющиеся идентификаторы «left» и «right». Вместо этого используйте класс.
Наконец, вам не нужно устанавливать ширину rightDiv равной 50%. Он должен автоматически выровняться по правому краю, если это то, что вам нужно.