js操作table中tr的顺序,实现上移下移一行的效果
总体思路是在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的顺序,实现上移下移一行的效果的更多相关文章
- 05_jquery 操作table使tr(数据)整行上移下移
1:ajax请求数据到页面 function GetWorkSpaceList() { GetServerData("get", GetEnterpriseUrl() + &quo ...
- js在table指定tr行上或底下添加tr行
js在table指定tr行上或下面添加tr行 function onAddTR(trIndex) { var tb = document.getElementB ...
- table中tr使用toggle不好,选择换一张方式
好几次遇到的问题,都是table中tr后面有一部分内容要显示,也是用tr装的,但是需要点击该行,后面那个tr才显示出来.不过最好不要用toggle去写,因为着实效果不佳.故而建议换一种方式,也许最简单 ...
- 第十三篇 JS 操作table表格
JS 操作table表格 这节课难度可能高一点,因为没有提前解释if判断.for循环.这节课是直接把这两样用上了,老师先简单介绍一下: if,判断语句,判断就很简单了嘛,假如说1=1(1等于1),当然 ...
- js导出table中的EXCEL总结
导出EXCEL通常是用PHP做,可是项目中,有时候PHP后端project师返回的数据不是我们想要的,作为前端开发project师,把相应的数据编号转换为文字后,展示给用户.可是.需求要把数据同一时候 ...
- 【2017-06-29】在登录页面自动返回上次请求页面、Js获取table中的行数与列数
一.在登录页面自动返回上次请求页面 Request.UrlReferrer比如 if (Request.UrlReferrer != null) { //如果能获取来路地址 Response.Redi ...
- JS移动li行数据,点击上移下移(是位置的互换,不是top的偏移量改变)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- js的传值,table中tr的遍历,js中动态创建数组
1.这里关键是对页面中的传值,其次是动态的创建一个数组,用来存值 $(val).css("background-color", "rgb(251, 248, 233)&q ...
- js操作table倒叙显示序号的问题
今天遇到一奇葩问题,就是在js添加table时,序号是倒叙显示的,而且数据库查出来时正序的,为什么显示是倒叙的呢? 我百度一番,终于有了结果: var newRow=table.insertRow(- ...
随机推荐
- 洛谷 P3178 BZOJ 4034 [HAOI2015]树上操作
题目描述 有一棵点数为 N 的树,以点 1 为根,且树点有边权.然后有 M 个操作,分为三种:操作 1 :把某个节点 x 的点权增加 a .操作 2 :把某个节点 x 为根的子树中所有点的点权都增加 ...
- logstash-input-jdbc实现mysql 与elasticsearch实时同步(ES与关系型数据库同步)
引言: elasticsearch 的出现使得我们的存储.检索数据更快捷.方便.但很多情况下,我们的需求是:现在的数据存储在mysql.oracle等关系型传统数据库中,如何尽量不改变原有数据库表结构 ...
- 华为USG6550 MIB CPU MEM
https://www.cnblogs.com/vincent-liang/p/7785089.html
- Sigma Function 数学 因子求和
Sigma function is an interesting function in Number Theory. It is denoted by the Greek letter Sigma ...
- likely, unlikely的作用
在项目中看到了likely.unlikely宏的使用, 一直不是非常清楚它们的作用,所以就深究下. likely表示被測试的表达式大多数情况下为true, unlikely则表示相反. 两个宏定义: ...
- BZOJ 1455 罗马游戏 左偏树
题目大意:给定n个点,每一个点有一个权值,提供两种操作: 1.将两个点所在集合合并 2.将一个点所在集合的最小的点删除并输出权值 非常裸的可并堆 n<=100W 启示式合并不用想了 左偏树就是快 ...
- SQL Server中如何设置对列的权限
一.方式一:使用视图 将需要限制用户只能看到特定的几个列.设置成一个视图,然后对这个视图进行权限控制 二.方式二:使用GRANT语句 1.授予相关列的查询权限(SELECT) 在数据库db1中,登录名 ...
- C语言——结构体的使用
C语言允许用户自己建立由不同类型数据组成的组合型的数据结构,它称为结构体. 1.建立一个结构体 struct 结构体名{ 成员列表 }; struct Date { int month; int da ...
- luogu2429 制杖题
题目大意 求不大于 m 的. 质因数集与给定有n个元素的质数集有交集的自然数之和. 数据范围 1 2 3 n*m<=10^7 4 5 n<=2,m<=10^9 6 7 n<=2 ...
- graphviz.js划线操作
digraph A{ graph[color=red bgcolor="cadetblue" label="海阔天空",fontname="FangS ...