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(- ...
随机推荐
- Django(七)
一.ModelForm操作及验证 1.class Meta:class Meta: #注意以下字段不能加逗号 model = models.UserInfo #这里的all代指所用的字段,也可以是一个 ...
- Thread和ThreadGroup
Thread和ThreadGroup 学习了:https://www.cnblogs.com/yiwangzhibujian/p/6212104.html 这个里面有Thread的基本内容: htt ...
- Codeforces Round #FF (Div. 2) D. DZY Loves Modification 贪心+优先队列
链接:http://codeforces.com/problemset/problem/447/D 题意:一个n*m的矩阵.能够进行k次操作,每次操作室对某一行或某一列的的数都减p,获得的得分是这一行 ...
- Java中Void占位符的測试及个人理解
Java对Void类的说明是:Void 类是一个不可实例化的占位符类,它保持一个对代表 Java keyword void 的 Class 对象的引用. 代表的是: 代表主要的 Java 类型 voi ...
- ReflectionSugar 通用反射类
http://www.cnblogs.com/sunkaixuan/p/4635710.html
- Swift 3 关于Date的一些操作
前言 最近在写关于日期的一些操作,所以整理了一下这方面的一些知识 本Demo使用的是playground. 我们以前使用的都是NSDate类进行日期的操作,在Swift 3.0中,我们就可以使用更加S ...
- 【Codeforces 258E】 Devu and Flowers
[题目链接] http://codeforces.com/contest/451/problem/E [算法] 容斥原理 [代码] #include<bits/stdc++.h> usin ...
- B1734 [Usaco2005 feb]Aggressive cows 愤怒的牛 二分答案
水题,20分钟AC,最大值最小,一看就是二分答案... 代码: Description Farmer John has built a <= N <= ,) stalls. The sta ...
- 转四种常见的post请求
HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS.GET.HEAD.POST.PUT.DELETE.TRACE.CONNECT 这几种.其中 POST 一般用来向服务端提交数据,本文 ...
- EOJ 2822 内存显示
一个 int 类型变量或 double 类型变量在连续几个字节的内存中存放.读取数值时,当数值中包含小数点时类型为 double,否则类型为 int.将读入的数值存放在 int 类型变量或 doubl ...