Я довольно долго искал подобное решение, но продолжаю находить, как перенести только одну строку из одной таблицы в другую, а не добавлять ВСЕ строки в таблицу 2 из таблицы 1 (и затем очищать строки из таблицы 1, что легко). Вот что я пробовал до сих пор:
function TransferRowsRight() {
var t1 = document.getElementById("t1");
const length = t1.rows.length;
for (var index = 0; index < length; index++) {
var rowHTML = $('#table1 tbody tr:first').html();
$('#table2 tr:last').after("<tr>" + rowHTML + "</tr>");
t1.deleteRow(0);
}
}
function TransferRowsLeft() {
var t2 = document.getElementById("t2");
const length = t2.rows.length;
for (var index = 0; index < length; index++) {
var rowHTML = $('#table2 tbody tr:first').html();
$('#table1 tr:last').after("<tr>" + rowHTML + "</tr>");
t2.deleteRow(0);
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div style="display: flex; flex-direction: row">
<table id="table1" border="1">
<thead>
<tr>
<th>Food</th>
<th>Cost</th>
<th>Quantity</th>
</tr>
<tbody id="t1">
<tr>
<td>Apple</td>
<td>$0.50</td>
<td>18</td>
</tr>
<tr>
<td>Bread</td>
<td>$1.99</td>
<td>7</td>
</tr>
<tr>
<td>Salmon</td>
<td>$7.99</td>
<td>5</td>
</tr>
</tbody>
</table>
<table id="table2" border="1" style="margin-left: 2%">
<thead>
<tr>
<th>Food</th>
<th>Cost</th>
<th>Quantity</th>
</tr>
</thead>
<tbody id="t2">
<tr>
<td>Broccoli</td>
<td>$3.75</td>
<td>11</td>
</tr>
<tr>
<td>Oranges</td>
<td>$6.50</td>
<td>8</td>
</tr>
<tr>
<td>Chicken</td>
<td>$6.25</td>
<td>12</td>
</tr>
</tbody>
</table>
<div style="align-self: center">
<button onclick="TransferRowsLeft()" style="margin-left: 2%">Transfer Rows Left</button>
<button onclick="TransferRowsRight()" style="margin-left: 2%">Transfer Rows Right</button>
</div>
</div>
Как вы можете видеть, мой код работает только для первых двух передач строк - одна влево и одна справа - и затем он не работает при попытке в третий раз. Также - и это важно - я знаю, что должен быть намного более простой и более ортодоксальный способ сделать это, например, с помощью встроенных JavaScript методов, а не того, что я делаю; Я просто не могу ничего найти по этому поводу.