js 实现表格数字排序

stoneprogramme 2010-12-06 11:42:48
如何用js实现表格内数字排序,点击表头可实现升序或降序排列。在网上搜了很长时间,看不懂,网上的有字符串和数字混排,太乱了。我现在只要数字排序,最好能有注释,简单点。谢谢各位了!!!
...全文
489 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
yajun_snow 2010-12-31
  • 打赏
  • 举报
回复
http://developer.yahoo.com/yui/examples/datatable/dt_basic.html
lowechenwen 2010-12-06
  • 打赏
  • 举报
回复
能力有限,不知满足要求不?

<script type="text/javascript">
function intSort() {
var t1 = document.getElementById("t1");
var trs = t1.getElementsByTagName("tr");
//将第一列的所有单元格值合并成数组
var sorttmp = "";
for (var i = 1; i < trs.length; i++) {
sorttmp += "," + t1.rows[i].cells[0].innerText;
}
sorttmp = t1.rows[0].cells[0].innerText + sorttmp;
var sort = sorttmp.split(",");
//冒泡排序
var tmp = 0;
var isOK = false;
while (!isOK) {
isOK = true;
for (var i = 0; i < sort.length - 1; i++) {
if (parseInt(sort[i]) > parseInt(sort[i + 1])) {//parseInt是关键,否则是string
tmp = parseInt(sort[i]);
sort[i] = parseInt(sort[i + 1]);
sort[i + 1] = tmp;
isOK = false;
}
}
}
for (var i = 0; i < trs.length - 1; i++) {
t1.rows[i].cells[0].innerText = sort[i];
}
}

</script>

</head>
<body>
<table id="t1" border="1">
<tr>
<td>45</td>
<td></td>
</tr>
<tr>
<td>264</td>
<td></td>
</tr>
<tr>
<td>234</td>
<td></td>
</tr>
<tr>
<td>17</td>
<td></td>
</tr>
<tr>
<td>31</td>
<td></td>
</tr>
<tr>
<td>77</td>
<td></td>
</tr>
<tr>
<td>89</td>
<td></td>
</tr>
<tr>
<td>99</td>
<td></td>
</tr>
<tr>
<td>65</td>
<td></td>
</tr>
<tr>
<td>312</td>
<td></td>
</tr>
<tr>
<td>
<input type="button" value="数字排序" onclick="intSort()" /></td>
<td>
<input type="button" value="字母排序" /></td>
</tr>
</table>
flyerwing 2010-12-06
  • 打赏
  • 举报
回复
array.sort(function(a1,a2){return a1>a2?1:-1;});//从小到大排序.
cloudgamer 2010-12-06
  • 打赏
  • 举报
回复
可以试试这个table排序
把type设为"int"就是按数字大小排序
lowechenwen 2010-12-06
  • 打赏
  • 举报
回复
晕,写错了,4L
lowechenwen 2010-12-06
  • 打赏
  • 举报
回复
1L方法大好
jz_freeman 2010-12-06
  • 打赏
  • 举报
回复
function sort(tableId, sortColumn,nodeType) {


var table = document.getElementById(tableId);

var tableBody = table.tBodies[0];
var tableRows = tableBody.rows;


var rowArray = new Array();
for (var i = 0; i < tableRows.length; i++) {
rowArray[i] = tableRows[i];
}
if (table.sortColumn == sortColumn) {

rowArray.reverse();
} else {
rowArray.sort(generateCompareTR(sortColumn, nodeType));
}
var tbodyFragment = document.createDocumentFragment();
for (var i = 0; i < rowArray.length; i++) {
tbodyFragment.appendChild(rowArray[i]);
}
tableBody.appendChild(tbodyFragment);
table.sortColumn = sortColumn;
}


function generateCompareTR(sortColumn, nodeType) {
return function compareTR(trLeft, trRight) {
var leftValue = convert(trLeft.cells[sortColumn].firstChild.nodeValue, nodeType);
var rightValue = convert(trRight.cells[sortColumn].firstChild.nodeValue, nodeType);
if (leftValue < rightValue) {
return -1;
} else {
if (leftValue > rightValue) {
return 1;
} else {
return 0;
}
}
};
}


function convert(value, dataType) {
switch (dataType) {
case "int":
return parseInt(value);
case "float":
return parseFloat(value);
case "date":
return new Date(Date.parse(value));
default:
return value.toString();
}
}

上面的是js方法 然后给表头添加onclick事件 onclick="sort('table2',2,'float')" 其中 table2为该表头所在的table id,2 为要排序的字段是table的第几个字段,float为数据类型
licip 2010-12-06
  • 打赏
  • 举报
回复
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<SCRIPT LANGUAGE="JavaScript">
<!--
function orderasc(flag){
var tbody = document.getElementById("tbodyid");
var trs = tbody.children;
for(var i = 0;i<trs.length-1;i++){
for(var j=0;j<trs.length-i-1;j++){
var tr1 = trs[j];
var tr2 = trs[j+1];
var td1i = parseInt(tr1.children[0].innerHTML,10);
var td2i = parseInt(tr2.children[0].innerHTML,10);

if(flag==0){
if(td1i > td2i){
tbody.insertBefore(tr2,tr1);
}
}else{
if(td1i < td2i){
tbody.insertBefore(tr2,tr1);
}
}
}
}
}

//-->
</SCRIPT>
</HEAD>

<BODY>
<TABLE border="1" id="tabid">
<TR>
<Th>编号<font onclick="orderasc(0)">升</font><font onclick="orderasc(1)">降</font></Th>
<Th>名称</Th>
</TR>
<tbody id="tbodyid">
<TR>
<TD>1</TD>
<TD>xm</TD>
</TR>
<TR>
<TD>10</TD>
<TD>qhit</TD>
</TR>
<TR>
<TD>5</TD>
<TD>xmqhit</TD>
</TR>
</tbody>
</TABLE>
</BODY>
</HTML>

87,922

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧