JS控制HTML表格行上下移动

[b]补充一下:[/b]重新调整了CSS和JS的浏览器兼容,希望大家多多指教,ThankYou!
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"/>
<title>Table test</title>
<style type="text/css">
table {
width: 300px;
border: 1px solid black;
}
.table2 {
width: 300px;
border: 0px;
}
td {
border: 1px solid black;
text-align: center;
font-size: 12pt;
padding: 3px;
}
.td2 {
border: 0px;
}
.alt {
background: #BEC5BE;
}
</style>
<script language="JavaScript" type="text/javascript">
window.onload = function() {
var _table = document.getElementById("table1");
cleanWhitespace(_table);
}

cleanWhitespace = function(element_obj) {
//遍历element的子结点
for (var i = 0; i < element_obj.childNodes.length; i++) {
var node = element_obj.childNodes[i];
//判断是否是空白文本结点,如果是,则删除该结点
if (node.nodeType == 3 && !/\S/.test(node.nodeValue))
node.parentNode.removeChild(node);
}
}

//使表格行上移,接收参数为链接对象
moveUp = function() {
//获得表格对象
var _table = document.getElementById("table1");
var _row = "";
for (var i = 0; i < _table.rows.length; i++) {
if (_table.rows[i].className == "alt")
_row = _table.rows[i];
}
//如果不是第一行,则与上一行交换顺序
if (_row.previousSibling) {
var last_row = _row.previousSibling;
while (last_row.nodeType != 1) {
last_row = last_row.previousSibling;
}
swapNode(_row,last_row);
}
}

//使表格行下移,接收参数为链接对象
moveDown = function() {
//获得表格对象
var _table = document.getElementById("table1");
var _row = "";
for (var i = 0; i < _table.rows.length; i++) {
if (_table.rows[i].className == "alt")
_row = _table.rows[i];
}
//如果不是最后一行,则与下一行交换顺序
if (_row.nextSibling) {
var next_row = _row.nextSibling;
while (next_row.nodeType != 1) {
next_row = next_row.nextSibling;
}
swapNode(_row,next_row);
}
}

//定义通用的函数交换两个结点的位置
swapNode = function(node1,node2) {
//获取父结点
var _parent = node1.parentNode;
//获取两个结点的相对位置
var _t1 = node1.nextSibling;
var _t2 = node2.nextSibling;
//将node2插入到原来node1的位置
if (_t1) _parent.insertBefore(node2,_t1);
else _parent.appendChild(node2);
//将node1插入到原来node2的位置
if (_t2) _parent.insertBefore(node1,_t2);
else _parent.appendChild(node1);
}

work_over = function(obj) {
obj.style.backgroundColor='#BEC5BE';
}

work_out = function(obj) {
obj.style.backgroundColor='';
}

work_click = function(obj) {
//获得表格对象
var t_obj = document.getElementById("table1");
//遍历所有表格对象的行
for (var i = 0; i < t_obj.rows.length; i++) {
//将行的样式清空
t_obj.rows[i].className = "";
}
obj.className = "alt";
}

work_updateSort = function() {
//获得表格对象
var t_obj = document.getElementById("table1");
//获得表格对象数组
var row_length = t_obj.rows.length;
var s_num = new Array(row_length);
//遍历所有表格对象的行
for (var i = 0; i < row_length; i++) {
s_num[i] = t_obj.rows[i].id;
}
}
</script>
</head>
<body>
<table id="table1">
<tr id="1" οnclick="work_click(this);" οnmοuseοver="work_over(this);" οnmοuseοut="work_out(this);">
<td width="25%">1</td>
<td width="25%">11</td>
<td width="25%">栏目</td>
<td width="25%">栏目</td>
</tr>
<tr id="2" οnclick="work_click(this);" οnmοuseοver="work_over(this);" οnmοuseοut="work_out(this);">
<td>2</td>
<td>22</td>
<td>栏目</td>
<td>栏目</td>
</tr>
<tr id="3" οnclick="work_click(this);" οnmοuseοver="work_over(this);" οnmοuseοut="work_out(this);">
<td>3</td>
<td>33</td>
<td>栏目</td>
<td>栏目</td>
</tr>
<tr id="4" οnclick="work_click(this);" οnmοuseοver="work_over(this);" οnmοuseοut="work_out(this);">
<td>4</td>
<td>44</td>
<td>栏目</td>
<td>栏目</td>
</tr>
<tr id="5" οnclick="work_click(this);" οnmοuseοver="work_over(this);" οnmοuseοut="work_out(this);">
<td>5</td>
<td>55</td>
<td>栏目</td>
<td>栏目</td>
</tr>
</table>
<form id="changeform" name="changeform" method="post">
<table id="table2" class = "table2">
<tr>
<td class = "td2">
<input name="button" type="button" class="" οnclick="moveUp();" value="上移"/>
<input name="button" type="button" class="" οnclick="moveDown();" value="下移"/>
<input name="Submit" type="button" class="" onClick="work_updateSort();" value="保存修改"/>
</td>
</tr>
</table>
</form>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值