当前位置:首页 > JavaScript

js 实现tr互换

2026-02-02 15:04:41JavaScript

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

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

通过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,可以更简洁地实现行交换:

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>

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

js 实现tr互换

标签: jstr
分享给朋友:

相关文章

js实现分页

js实现分页

实现分页的基本思路 分页功能通常需要处理数据分割、页码生成和用户交互。核心逻辑包括计算总页数、根据当前页截取数据、渲染页码按钮等。 前端分页实现(静态数据) 假设已有全部数据,仅需前端分页展示:…

js 实现vue模板

js 实现vue模板

实现 Vue 模板的 JavaScript 方法 通过原生 JavaScript 可以实现类似 Vue 的模板渲染功能,主要包括数据绑定、指令处理和模板解析。以下是核心实现思路: 数据绑定与…

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.…

js实现全选

js实现全选

实现全选功能的方法 在JavaScript中实现全选功能通常涉及监听全选复选框的点击事件,并根据其状态控制其他复选框的选中状态。以下是几种常见的实现方式: 基础DOM操作实现 通过获取所有目标复选…

js 进度条的实现

js 进度条的实现

使用 HTML 和 CSS 创建基础进度条 HTML 结构可以简单使用一个 div 元素作为容器,内部嵌套另一个 div 表示进度: <div class="progress-containe…

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document.…