当前位置:首页 > JavaScript

实现表格上移下移 js

2026-03-01 23:27:36JavaScript

实现表格行上移下移功能

通过JavaScript实现表格行的上移和下移操作,可以结合DOM操作和事件监听完成。以下是具体实现方法:

实现表格上移下移 js

基本HTML结构

<table id="sortableTable">
  <thead>
    <tr>
      <th>姓名</th>
      <th>操作</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>张三</td>
      <td>
        <button class="move-up">上移</button>
        <button class="move-down">下移</button>
      </td>
    </tr>
    <tr>
      <td>李四</td>
      <td>
        <button class="move-up">上移</button>
        <button class="move-down">下移</button>
      </td>
    </tr>
    <!-- 更多行... -->
  </tbody>
</table>

JavaScript实现

document.addEventListener('DOMContentLoaded', function() {
  const table = document.getElementById('sortableTable');

  table.addEventListener('click', function(e) {
    const btn = e.target;
    const row = btn.closest('tr');

    if (btn.classList.contains('move-up')) {
      moveRowUp(row);
    } else if (btn.classList.contains('move-down')) {
      moveRowDown(row);
    }
  });

  function moveRowUp(row) {
    const prevRow = row.previousElementSibling;
    if (prevRow && prevRow.tagName === 'TR') {
      row.parentNode.insertBefore(row, prevRow);
    }
  }

  function moveRowDown(row) {
    const nextRow = row.nextElementSibling;
    if (nextRow && nextRow.tagName === 'TR') {
      row.parentNode.insertBefore(nextRow, row);
    }
  }
});

使用jQuery简化实现

如果项目中已引入jQuery,可以使用更简洁的写法:

实现表格上移下移 js

$(document).ready(function() {
  $('#sortableTable').on('click', '.move-up', function() {
    const row = $(this).closest('tr');
    row.prev().before(row);
  });

  $('#sortableTable').on('click', '.move-down', function() {
    const row = $(this).closest('tr');
    row.next().after(row);
  });
});

注意事项

  • 上移操作需要检查当前行是否已经是第一行
  • 下移操作需要检查当前行是否已经是最后一行
  • 如果表格有固定行(如表头),需要确保操作只针对数据行
  • 移动后可能需要重新绑定事件或更新数据索引

扩展功能

可以为移动操作添加动画效果,提升用户体验:

function moveRowWithAnimation(row, direction) {
  const tbody = row.parentNode;
  const duration = 300;

  if (direction === 'up') {
    const prevRow = row.previousElementSibling;
    if (prevRow) {
      row.style.transition = `transform ${duration}ms`;
      row.style.transform = 'translateY(-100%)';

      setTimeout(() => {
        tbody.insertBefore(row, prevRow);
        row.style.transition = '';
        row.style.transform = '';
      }, duration);
    }
  }
  // 类似实现下移动画...
}

以上方法提供了纯JavaScript和jQuery两种实现方案,可根据项目需求选择合适的方式。

标签: 表格js
分享给朋友:

相关文章

js实现全屏

js实现全屏

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

css好看的表格制作

css好看的表格制作

使用CSS制作美观表格的方法 边框与间距优化 通过border-collapse属性合并边框,避免双边框效果。设置padding增加单元格内边距,提升可读性。 table { border-…

js实现图表

js实现图表

在JavaScript中实现图表通常使用流行的图表库,以下是几种常见的方法和工具: 使用Chart.js Chart.js是一个简单灵活的库,适合快速生成响应式图表。安装方式包括CDN引入或npm安…

js实现tab选项卡切换

js实现tab选项卡切换

实现Tab选项卡切换的JavaScript方法 使用纯JavaScript实现Tab切换功能,可以通过监听点击事件动态切换内容显示状态。以下是两种常见实现方式: 基础DOM操作实现 /…

使用js实现

使用js实现

使用JavaScript实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const random…

vue实现表格追加

vue实现表格追加

实现表格数据追加的方法 在Vue中实现表格数据追加可以通过多种方式完成,主要涉及数据绑定和数组操作。以下是几种常见的方法: 数据绑定与v-for指令 通过v-for指令渲染表格数据,利用数组的co…