如题

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
.tbl-list, .tbl-list td, .tbl-list th {
border: solid 1px #000;
border-collapse: collapse;
padding: 10px;
margin: 15px;
}
</style>
<script type="text/javascript" src="http://lib.sinaapp.com/js/jquery/1.7.2/jquery.min.js"></script>
<title>table sort</title>
<script type="text/javascript">
//排序 tableId: 表的id,iCol:第几列 ;dataType:iCol对应的列显示数据的数据类型
function sortAble(th, tableId, iRow, iCol, dataType) { var ascChar = "▲";
var descChar = "▼"; var table = document.getElementById(tableId);
var rows = table.tHead.rows;
//排序标题加背景色
for (var i = 0; i < rows.length; i++) {
for(var j=0;j<rows[i].cells.length;j++){//取得第几行下面的td个数,再次循环遍历该行下面的td元素
var th = rows[i].cells[j];
var thText= th.innerHTML.replace(ascChar, "").replace(descChar, "");
if(i==iRow&&j==iCol){
}
else{
th.innerHTML=thText;
}
}
} var tbody = table.tBodies[0];
var colRows = tbody.rows;
var aTrs = new Array; //将得到的行放入数组,备用
for (var i = 0; i < colRows.length; i++) {
aTrs.push(colRows[i]);
} //判断上一次排列的列和现在需要排列的是否同一个。
if (table.sortCol == iCol) {
aTrs.reverse();
} else {
//如果不是同一列,使用数组的sort方法,传进排序函数
aTrs.sort(compareEle(iCol, dataType));
} var oFragment = document.createDocumentFragment();
for (var i = 0; i < aTrs.length; i++) {
oFragment.appendChild(aTrs[i]);
}
tbody.appendChild(oFragment); //记录最后一次排序的列索引
table.sortCol = iCol; //给排序标题加“升序、降序” 小图标显示
var th = rows[iRow].cells[iCol]; if (th.innerHTML.indexOf(ascChar) == -1 && th.innerHTML.indexOf(descChar) == -1) {
th.innerHTML += ascChar;
//alert(th.innerHTML);
}
else if (th.innerHTML.indexOf(ascChar) != -1) {
th.innerHTML=th.innerHTML.replace(ascChar, descChar);
//alert(th.innerHTML.replace(ascChar,descChar)); }
else if (th.innerHTML.indexOf(descChar) != -1) {
th.innerHTML=th.innerHTML.replace(descChar, ascChar);
} } //将列的类型转化成相应的可以排列的数据类型
function convert(sValue, dataType) {
switch (dataType) {
case "int":
return parseInt(sValue, 10);
case "float":
return parseFloat(sValue);
case "date":
return new Date(Date.parse(sValue));
case "string":
default:
return sValue.toString();
}
} //排序函数,iCol表示列索引,dataType表示该列的数据类型
function compareEle(iCol, dataType) {
return function (oTR1, oTR2) { var vValue1 = convert(removeHtmlTag($(oTR1.cells[iCol]).html()), dataType);
var vValue2 = convert(removeHtmlTag($(oTR2.cells[iCol]).html()), dataType);
if (vValue1 < vValue2) {
return -1;
}
else {
return 1;
} };
} //去掉html标签
function removeHtmlTag(html) {
return html.replace(/<[^>]+>/g, "");
} </script>
</head> <body> <table id="tableId" class="tbl-list" cellpadding="0" cellspacing="0" style="table-layout:fixed;">
<thead>
<tr>
<td rowspan="2" >序号</td>
<td width="100px" rowspan="2" onclick="sortAble(this,'tableId', 0,1,'string')"
style="cursor:pointer">姓名</td>
<td width="200px" rowspan="2" onclick="sortAble(this,'tableId',0, 2, 'date')"
style="cursor:pointer">生日</td>
<td width="200px" colspan="2" style="cursor:pointer">年龄</td>
<td width="100px" rowspan="2" onclick="sortAble(this,'tableId', 0,4, 'float')"
style="cursor:pointer">工资</td> </tr>
<tr>
<td onclick="sortAble(this,'tableId', 1, 0, 'int')" style="cursor:pointer">age 1</td>
<td onclick="sortAble(this,'tableId', 1, 1, 'int')" style="cursor:pointer">age 2</td>
</tr>
</thead>
<tbody>
<tr group="A">
<td>1</td>
<td>Group-A</a></td>
<td>01/12/1982</td>
<td>25</td>
<td>26</td>
<td>1000.50</td>
</tr> <tr group="B">
<td>4</td>
<td>Group-B</a></td>
<td>10/14/1999</td>
<td>18</td>
<td>19</td>
<td>1000.20</td>
</tr> <tr group="C">
<td>7</td>
<td>Group-C</a></td>
<td>10/14/1980</td>
<td>8</td>
<td>20</td>
<td>1000.30</td>
</tr> </tbody>
</table>
</body>
</html>

js获取tr,td内容并排序的更多相关文章

  1. js 获取浏览器显示内容的宽度和高度

      js获取浏览器显示内容的宽度和高度 CreateTime--2017年7月10日17:24:12Author:Marydon 1.获取浏览器屏幕显示d的网页宽度 /** * 得到浏览器显示的屏幕高 ...

  2. DOM操作 、js获取id的内容 和修改原来的内容(innerHTML)

    js获取id的内容(getElementById) 和修改原来的内容(innerHTML) 1.通过ID获取元素 学过HTML/CSS样式,都知道,网页由标签将信息组织起来,而标签的id属性值是唯一的 ...

  3. js获取,设置FCKeditor内容

    // 获取编辑器中HTML内容 function getEditorHTMLContents(EditorName) {     var oEditor = FCKeditorAPI.GetInsta ...

  4. 非正规写法获取不到tr,td

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. jquery、js获取table,遍历输出tr中各个td的内容。

    首先,依赖jquery.. $('#btntb').click(function(){ $('#tab tr').each(function(i){ // 遍历 tr $(this).children ...

  6. javascript生成表格增删改查 JavaScript动态改变表格单元格内容 动态生成表格 JS获取表格任意单元格 javascript如何动态删除表格某一行

    jsp页面表格布局Html代码 <body onload="show()"> <center> <input type="text" ...

  7. js获取iframe里的body内容

    做个页面 需要加入a.html 使用的js动态添加iframe 直接JQ添加的 代码 $(".banner-box").after(“<iframe src="ht ...

  8. JQuery td内容获取,修改

    业务需求:获取某个表格中每一行第四个td内容,并根据内容为当前td重新赋值 $(".listtable.table.table-striped.table-bordered.table-ho ...

  9. JS动态创建Table,Tr,Td并赋值

    JS动态创建Table,Tr,Td并赋值. 成果库修改: 要求主题列表随成果类型改变而改变 网上查询资料后开工,在成果类型下拉框添加change()事件触发Dwr,查询主题集合——动态创建/编辑Tab ...

随机推荐

  1. 分布式版本控制系统Git-----9.Git 使用的小技巧

    1. git push -u orgin master[后面push的时候可简写] 第一次push的时候-u后面加上<本地分支名><远程分支>,第二次push的时候就只需要写g ...

  2. RPC框架基本原理(三):调用链路分析

    本文主要阐述下RPC调用过程中的寻址,序列化,以及服务端调用问题. 寻址 随机寻址 从可用列表中,随机选择地址 一致性寻址 可用服务地址一致性hash管理:根据可服务的地址,构造treemap,计算c ...

  3. log设置

    1.log的设置方式 .在 runtime setting中可以设置log的生成方式:默认的log方式:Enable logging选中,log option是Send messages only w ...

  4. Arrays.toString(a)--->将数组a的值转换为字符串

    Arrays.toString(数组)是java内置类Arrays类的一个方法,具体查Api可知.因为数组是不可直接输出的,它的作用是将数组转换为字符串.其实用for循环也是可以做到的,只不过比for ...

  5. Sublime Text 2

    常用功能: 安装Package Control:https://sublime.wbond.net/ 多行选择.多行编辑鼠标选中多行,按下 Ctrl+Shift+L (Command+Shift+L) ...

  6. screen 对象当当获取屏幕而已 innethtml可以知道调整屏幕宽度

    <div id='lidepeng' style="height: 100px;width: 100px;"></div><script type=& ...

  7. Web安全知多少

    随着Web2.0.网络社交等一系列新型的互联网产品的诞生,基于Web环境的互联网应用越来越广泛,企业信息化的过程中,越来越多的应用都架设在Web平台上.Web业务的迅速发展吸引了黑客们的强烈关注,接踵 ...

  8. ggplot2 theme相关设置—线条设置

    在ggplot的主题射中有一部分图需要对图中的部分线条进行设置 element_line(colour = NULL, size = NULL, linetype = NULL, lineend = ...

  9. 【入门一】一些简单的C程序及VS的安装

    实例1 用 printf 函数打印字符串 # include <stdio.h> // 预处理指令,结尾不加 ';' int main(void) // int表示该函数将返回一个整数值, ...

  10. C++中构造函数或析构函数定义为private

    转自:http://www.blogjava.net/fhtdy2004/archive/2009/05/30/278971.html 很多情况下要求当前的程序中只有一个object.例如一个程序只有 ...