当前位置:首页 > JavaScript

js 实现tr互换

2026-02-02 15:04:41JavaScript

实现表格行互换(tr互换)的方法

在JavaScript中实现表格行(<tr>)互换可以通过操作DOM来完成。以下是几种常见的实现方式:

js 实现tr互换

通过DOM操作交换行

function swapTableRows(tableId, rowIndex1, rowIndex2) {
  const table = document.getElementById(tableId);
  const rows = table.rows;

  if (rowIndex1 >= rows.length || rowIndex2 >= rows.length) return;

  const row1 = rows[rowIndex1];
  const row2 = rows[rowIndex2];

  const temp = document.createElement('tr');
  row1.parentNode.insertBefore(temp, row1);
  row2.parentNode.insertBefore(row1, row2);
  temp.parentNode.insertBefore(row2, temp);
  temp.parentNode.removeChild(temp);
}

使用insertBefore方法

function swapRows(row1, row2) {
  const tbody = row1.parentNode;
  const nextRow = row1.nextSibling === row2 ? row2.nextSibling : row2.nextSibling;

  tbody.insertBefore(row1, row2);
  tbody.insertBefore(row2, nextRow);
}

使用jQuery实现

如果项目中使用了jQuery,可以更简洁地实现行交换:

js 实现tr互换

function swapRowsJQuery(tableId, rowIndex1, rowIndex2) {
  const $table = $('#' + tableId);
  const $rows = $table.find('tr');

  if (rowIndex1 >= $rows.length || rowIndex2 >= $rows.length) return;

  const $row1 = $rows.eq(rowIndex1);
  const $row2 = $rows.eq(rowIndex2);

  if ($row1.index() < $row2.index()) {
    $row2.after($row1);
    $row1.after($row2);
  } else {
    $row1.after($row2);
    $row2.after($row1);
  }
}

处理事件绑定的注意事项

当交换行时,如果行上有事件监听器,需要注意:

// 在交换行后重新绑定事件
function swapRowsWithEvents(tableId, rowIndex1, rowIndex2) {
  swapTableRows(tableId, rowIndex1, rowIndex2);

  // 重新绑定事件处理程序
  const table = document.getElementById(tableId);
  const rows = table.rows;

  // 这里添加事件绑定逻辑
  // rows[rowIndex1].addEventListener(...);
  // rows[rowIndex2].addEventListener(...);
}

完整示例代码

<table id="myTable">
  <tr><td>Row 1</td></tr>
  <tr><td>Row 2</td></tr>
  <tr><td>Row 3</td></tr>
</table>

<button onclick="swapTableRows('myTable', 0, 1)">Swap Row 1 and 2</button>

<script>
function swapTableRows(tableId, rowIndex1, rowIndex2) {
  const table = document.getElementById(tableId);
  const rows = table.rows;

  if (rowIndex1 >= rows.length || rowIndex2 >= rows.length) return;

  const row1 = rows[rowIndex1];
  const row2 = rows[rowIndex2];

  const temp = document.createElement('tr');
  row1.parentNode.insertBefore(temp, row1);
  row2.parentNode.insertBefore(row1, row2);
  temp.parentNode.insertBefore(row2, temp);
  temp.parentNode.removeChild(temp);
}
</script>

这些方法提供了不同情况下实现表格行互换的解决方案,可以根据具体需求选择最适合的实现方式。

标签: jstr
分享给朋友:

相关文章

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 使用JavaScript实现拖拽功能需要监听鼠标事件,包括mousedown、mousemove和mouseup。以下是实现的基本逻辑: const draggableEleme…

js实现全屏

js实现全屏

实现全屏的基本方法 使用JavaScript实现全屏功能主要依赖Element.requestFullscreen()方法。现代浏览器均支持此API,但不同浏览器可能需要添加前缀。 // 触发全屏…

js实现pdf在线预览

js实现pdf在线预览

使用PDF.js实现PDF在线预览 PDF.js是由Mozilla开发的一个开源JavaScript库,可以在网页中直接渲染PDF文件。以下是实现PDF在线预览的步骤: 引入PDF.js库 在HT…

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似:…

利用js实现

利用js实现

使用 JavaScript 实现 在 JavaScript 中,可以通过多种方式实现功能,具体取决于需求。以下是几种常见的方法: 方法一:使用原生 JavaScript // 示例代码…

js实现搜索

js实现搜索

实现搜索功能的方法 在JavaScript中实现搜索功能可以通过多种方式完成,以下是几种常见的实现方法。 使用数组的filter方法 通过数组的filter方法可以筛选出符合条件的数据项。假设有一个…