js操作table中tr的顺序实现上移下移一行的效果


Posted in Javascript onNovember 22, 2018

总体思路是在table外部加个div,修改div的innerHtml实现改变tr顺序的效果

具体思路是

获取当前要移动tr行的rowIndex,在table中删除掉,然后循环table的rows,到了目标行再直接加进去,最后把整体的html赋值给div完成效果

js代码如下

//使行向上一行
    function setRowUp(obj) {
      if (obj.parentNode.parentNode.rowIndex != 1) {
        var tab = obj.parentNode.parentNode.parentNode;
        var nowNodeInnerHtml = obj.parentNode.parentNode.innerHTML;
        var nowNowIndex = obj.parentNode.parentNode.rowIndex;
        tab.deleteRow(nowNowIndex);
        var newHtml = "<table cellpadding=\"5\" cellspacing=\"0\">";
        newHtml += ("<TR style='font-weight: bold; text-align: center;'>" + tab.rows[0].innerHTML + "</TR>");
        for (i = 1; i < tab.rows.length; i++) {
          if (i == (nowNowIndex - 1)) {
            newHtml += ("<TR>" + nowNodeInnerHtml + "</TR>");
          }
          newHtml += ("<TR>" + tab.rows[i].innerHTML + "</TR>");
        }
        newHtml += "</table>";
        document.getElementById("divContent").innerHTML = newHtml;
      }
    }
    //使行向下一行
    function setRowDown(obj) {
      if (obj.parentNode.parentNode.rowIndex != (document.getElementById("divContent").childNodes[0].rows.length - 1)) {
        var tab = obj.parentNode.parentNode.parentNode;
        var nowNodeInnerHtml = obj.parentNode.parentNode.innerHTML;
        var nowNowIndex = obj.parentNode.parentNode.rowIndex;
        tab.deleteRow(nowNowIndex);
        var newHtml = "<table cellpadding=\"5\" cellspacing=\"0\">";
        newHtml += ("<TR style='font-weight: bold; text-align: center;'>" + tab.rows[0].innerHTML + "</TR>");
        for (i = 1; i < tab.rows.length; i++) {
          if (i == (nowNowIndex + 1)) {
            newHtml += ("<TR>" + nowNodeInnerHtml + "</TR>");
          }
          newHtml += ("<TR>" + tab.rows[i].innerHTML + "</TR>");
        }
        //向下可能到表格现有行数外 额外处理
        if (tab.rows.length == (nowNowIndex + 1)) {
          newHtml += ("<TR>" + nowNodeInnerHtml + "</TR>");
        }
        newHtml += "</table>";
        document.getElementById("divContent").innerHTML = newHtml;
      }
    }

测试html代码如下

<body>
  <div id="divContent">
    <table cellpadding="5" cellspacing="0">
      <tr style='font-weight: bold; text-align: center;'><td>工号</td><td>姓名</td></tr>
      <tr><td>0001
        <input type="button" value="↑" onclick="setRowUp(this)" />
        <input type="button" value="↓" onclick="setRowDown(this)" />
        </td><td>姓名01</td></tr>
      <tr><td>0002
        <input type="button" value="↑" onclick="setRowUp(this)" />
        <input type="button" value="↓" onclick="setRowDown(this)" />
        </td><td>姓名02</td></tr>
      <tr><td>0003
        <input type="button" value="↑" onclick="setRowUp(this)" />
        <input type="button" value="↓" onclick="setRowDown(this)" />
        </td><td>姓名03</td></tr>
      <tr><td>0004
        <input type="button" value="↑" onclick="setRowUp(this)" />
        <input type="button" value="↓" onclick="setRowDown(this)" />
        </td><td>姓名04</td></tr>
      <tr><td>0005
        <input type="button" value="↑" onclick="setRowUp(this)" />
        <input type="button" value="↓" onclick="setRowDown(this)" />
        </td><td>姓名05</td></tr>
    </table>
  </div>
</body>

总结

以上所述是小编给大家介绍的js操作table中tr的顺序实现上移下移一行的效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
滚动经典最新话题[prototype框架]下编写
Oct 03 Javascript
google 搜索框添加关键字实现代码
Apr 24 Javascript
javascript开发技术大全-第3章 js数据类型
Jul 03 Javascript
JQuery通过Ajax提交表单并返回结果
Jul 31 Javascript
Javascript 类、命名空间、代码组织代码
Jul 31 Javascript
用JQuery实现表格隔行变色和突出显示当前行的代码
Feb 10 Javascript
Select标签下拉列表二级联动级联实例代码
Feb 07 Javascript
Jquery实现瀑布流布局(备有详细注释)
Jul 31 Javascript
纯javascript实现分页(两种方法)
Aug 26 Javascript
Jquery ajax基础教程
Nov 20 Javascript
vue2.0实战之基础入门(1)
Mar 27 Javascript
JavaScript中BOM对象原理与用法分析
Jul 09 Javascript
从源码里了解vue中的nextTick的使用
Nov 22 #Javascript
Vue动态加载异步组件的方法
Nov 21 #Javascript
微信小程序局部刷新触发整页刷新效果的实现代码
Nov 21 #Javascript
跨域解决之JSONP和CORS的详细介绍
Nov 21 #Javascript
如何去除富文本中的html标签及vue、react、微信小程序中的过滤器
Nov 21 #Javascript
JSON生成Form表单的方法示例
Nov 21 #Javascript
apicloud拉起小程序并传递参数的方法示例
Nov 21 #Javascript
You might like
php 设计模式之 工厂模式
2008/12/19 PHP
使用PHP处理数据库数据如何将数据返回客户端并显示当前状态
2016/02/16 PHP
CI框架中$this-&gt;load-&gt;library()用法分析
2016/05/18 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
2019/11/25 PHP
张孝祥JavaScript学习阶段性总结(2)--(X)HTML学习
2007/02/03 Javascript
在Z-Blog中运行代码[html][/html](纯JS版)
2007/03/25 Javascript
javascript xml为数据源的下拉框控件
2009/07/07 Javascript
JavaScript 动态创建VML的方法
2009/10/14 Javascript
JavaScript高级程序设计(第3版)学习笔记 概述
2012/10/11 Javascript
css+js实现部分区域高亮可编辑遮罩层
2014/03/04 Javascript
jquery+CSS3实现淘宝移动网页菜单效果
2015/08/31 Javascript
原生JS和jQuery版实现文件上传功能
2016/04/18 Javascript
node.js中 stream使用教程
2016/08/28 Javascript
Javascript数组循环遍历之forEach详解
2016/11/07 Javascript
浅谈js键盘事件全面控制
2016/12/01 Javascript
详解Bootstrap各式各样的按钮(推荐)
2016/12/13 Javascript
vue项目中做编辑功能传递数据时遇到问题的解决方法
2016/12/19 Javascript
高效的jQuery代码编写技巧总结
2017/02/22 Javascript
深入理解在JS中通过四种设置事件处理程序的方法
2017/03/02 Javascript
VUE开发一个图片轮播的组件示例代码
2017/03/06 Javascript
vue实现的请求服务器端API接口示例
2019/05/25 Javascript
解决vue打包后vendor.js文件过大问题
2019/07/03 Javascript
浅谈Layui的eleTree树式选择器使用方法
2019/09/25 Javascript
微信小程序纯文本实现@功能
2020/04/08 Javascript
打印出python 当前全局变量和入口参数的所有属性
2009/07/01 Python
Python中字典的浅拷贝与深拷贝用法实例分析
2018/01/02 Python
python使用xlsxwriter实现有向无环图到Excel的转换
2018/12/12 Python
Python编程flask使用页面模版的方法
2018/12/28 Python
Python with用法:自动关闭文件进程
2019/07/10 Python
HTML5 input placeholder 颜色修改示例
2014/05/30 HTML / CSS
FORZIERI福喜利中国官网:奢侈品购物梦工厂
2019/05/03 全球购物
学生期末评语大全
2014/04/30 职场文书
党的群众路线教育实践活动制度建设计划方案
2014/10/31 职场文书
师范生见习报告范文
2014/11/03 职场文书
店面出租协议书范本
2014/11/28 职场文书
平安家庭事迹材料
2014/12/20 职场文书