当前位置:首页 > 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实现换肤

使用CSS变量实现换肤 通过CSS变量可以轻松实现主题切换功能。CSS变量在根元素中定义,通过JavaScript动态修改这些变量值。 :root { --primary-color: #349…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…

利用js实现

利用js实现

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