javascript table排序 这个更简单了,不用改变现在的表格结构

JavaScript实现可自定义排序的表格 -

BODY {
FONT-SIZE: 0.8em; FONT-FAMILY: Trebuchet MS, Lucida Sans Unicode, Arial, sans-serif
}
P {
FONT-WEIGHT: bold; MARGIN-BOTTOM: 0px
}
.tableWidget_headerCell {
BORDER-RIGHT: #aca899 1px solid; BORDER-LEFT: #fff 1px solid; CURSOR: pointer; BORDER-BOTTOM: #c5c2b2 3px solid; BACKGROUND-COLOR: #ece9d8
}
.tableWigdet_headerCellOver {
BORDER-RIGHT: #aca899 1px solid; BORDER-LEFT: #fff 1px solid; CURSOR: pointer; BORDER-BOTTOM: #c5c2b2 3px solid; BACKGROUND-COLOR: #ece9d8
}
.tableWigdet_headerCellDown {
BORDER-RIGHT: #aca899 1px solid; BORDER-LEFT: #fff 1px solid; CURSOR: pointer; BORDER-BOTTOM: #c5c2b2 3px solid; BACKGROUND-COLOR: #ece9d8
}
.tableWidget_headerCell {
BORDER-TOP: #ece9d8 2px solid
}
.tableWigdet_headerCellOver {
BORDER-TOP: #ffc83c 2px solid
}
.tableWidget TBODY .tableWidget_dataRollOver {
BACKGROUND-COLOR: #fff
}
.tableWigdet_headerCellDown {
BORDER-RIGHT: #fff 1px solid; BORDER-TOP: #ffc83c 2px solid; BORDER-LEFT: #aca899 1px solid; BACKGROUND-COLOR: #dbd8c5
}
.tableWidget TD {
PADDING-RIGHT: 2px; PADDING-LEFT: 2px; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-TOP: 2px; BORDER-BOTTOM: #eae9e1 1px solid
}
.tableWidget TBODY {
BACKGROUND-COLOR: #fff
}
.tableWidget {
FONT-SIZE: 12px; WIDTH: 400px; FONT-FAMILY: arial
}
DIV.widget_tableDiv {
BORDER-RIGHT: #aca899 1px solid; BORDER-TOP: #aca899 1px solid; OVERFLOW-Y: auto; BORDER-LEFT: #aca899 1px solid; WIDTH: 400px; BORDER-BOTTOM: #aca899 1px solid; HEIGHT: 200px
}
HTML > BODY DIV.widget_tableDiv {
OVERFLOW: hidden; WIDTH: 400px
}
.tableWidget THEAD {
POSITION: relative
}
.tableWidget THEAD TR {
BOTTOM: 0px; POSITION: relative; TOP: 0px
}
.tableWidget .scrollingContent {
OVERFLOW-Y: auto; WIDTH: 100%
}

/*
(C) www.dhtmlgoodies.com, October 2005
This is a script from www.dhtmlgoodies.com. You will find this and a lot of other scripts at our website.
Terms of use:
You are free to use this script as long as the copyright message is kept intact. However, you may not
redistribute, sell or repost it without our permission.
Thank you!
www.dhtmlgoodies.com
Alf Magne Kalleland
*/
var tableWidget_tableCounter = 0;
var tableWidget_arraySort = new Array();
var tableWidget_okToSort = true;
var activeColumn = new Array();
var arrowImagePath = "images/"; // Path to arrow images
function addEndCol(obj)
{
if(document.all)return;
var rows = obj.getElementsByTagName('TR');
for(var no=0;no=0)a = eval(a);
if(b.indexOf('/')>=0)b = eval(b);
return a/1 - b/1;
}
function sortString(a, b) {
if ( a.toUpperCase() b.toUpperCase() ) return 1;
return 0;
}
function cancelTableWidgetEvent()
{
return false;
}
function sortTable()
{
if(!tableWidget_okToSort)return;
tableWidget_okToSort = false;
/* Getting index of current column */
var obj = this;
var indexThis = 0;
while(obj.previousSibling){
obj = obj.previousSibling;
if(obj.tagName=='TD')indexThis++;
}
var images = this.getElementsByTagName('IMG');
if(this.getAttribute('direction') || this.direction){
direction = this.getAttribute('direction');
if(navigator.userAgent.indexOf('Opera')>=0)direction = this.direction;
if(direction=='ascending'){
direction = 'descending';
this.setAttribute('direction','descending');
this.direction = 'descending';
}else{
direction = 'ascending';
this.setAttribute('direction','ascending');
this.direction = 'ascending';
}
}else{
direction = 'ascending';
this.setAttribute('direction','ascending');
this.direction = 'ascending';
}
if(direction=='descending'){
images[0].style.display='inline';
images[0].style.visibility='visible';
images[1].style.display='none';
}else{
images[1].style.display='inline';
images[1].style.visibility='visible';
images[0].style.display='none';
}
var tableObj = this.parentNode.parentNode.parentNode;
var tBody = tableObj.getElementsByTagName('TBODY')[0];
var widgetIndex = tableObj.id.replace(/[^\d]/g,'');
var sortMethod = tableWidget_arraySort[widgetIndex][indexThis]; // N = numeric, S = String
if(activeColumn[widgetIndex] && activeColumn[widgetIndex]!=this){
var images = activeColumn[widgetIndex].getElementsByTagName('IMG');
images[0].style.display='none';
images[1].style.display='inline';
images[1].style.visibility = 'hidden';
if(activeColumn[widgetIndex])activeColumn[widgetIndex].removeAttribute('direction');
}
activeColumn[widgetIndex] = this;
var cellArray = new Array();
var cellObjArray = new Array();
for(var no=1;no=0;no--){
for(var no2=0;no2=0){
obj.parentNode.style.overflowY = 'auto';
}
tableWidget_arraySort[tableWidget_tableCounter] = sortArray;
if(width.indexOf('%')>=0){
obj.style.width = width;
obj.parentNode.style.width = width;
}else{
obj.style.width = width + 'px';
obj.parentNode.style.width = width + 'px';
}
if(height.indexOf('%')>=0){
//obj.style.height = height;
obj.parentNode.style.height = height;
}else{
//obj.style.height = height + 'px';
obj.parentNode.style.height = height + 'px';
}
obj.id = 'tableWidget' + tableWidget_tableCounter;
addEndCol(obj);
obj.cellSpacing = 0;
obj.cellPadding = 0;
obj.className='tableWidget';
var tHead = obj.getElementsByTagName('THEAD')[0];
var cells = tHead.getElementsByTagName('TD');
for(var no=0;no(tBody.parentNode.parentNode.offsetHeight - 50)) {
tBody.style.height = (obj.parentNode.clientHeight-tHead.offsetHeight) + 'px';
}else{
tBody.style.overflow='hidden';
}
if(navigator.userAgent.indexOf('Opera')>=0){
obj.parentNode.style.overflow = 'auto';
}
}
for(var no=1;no=0)return;
this.className='tableWidget_dataRollOver';
if(document.all){ // I.E fix for "jumping" headings
var divObj = this.parentNode.parentNode.parentNode;
var tHead = divObj.getElementsByTagName('TR')[0];
tHead.style.top = divObj.scrollTop + 'px';
}
}
function deHighlightDataRow()
{
if(navigator.userAgent.indexOf('Opera')>=0)return;
this.className=null;
if(document.all){ // I.E fix for "jumping" headings
var divObj = this.parentNode.parentNode.parentNode;
var tHead = divObj.getElementsByTagName('TR')[0];
tHead.style.top = divObj.scrollTop + 'px';
}
}



































































































Name Age Position Income Gender
John 37 Managing director 90.000 Male
Susan 34 Partner 90.000 Female
David 29 Head of production 70.000 Male
Laura 29 Head of marketing 70.000 Female
Kate 18 Marketing 50.000 Female
Mona 21 Marketing 53.000 Female
Mike 21 Marketing 53.000 Male
Mark 25 Production 52.000 Male
Peter 33 Production 55.000 Male
Jennifer 24 Production 49.000 Female
David 25 Photography 51.000 Male
Anna 42 Head of photography 56.000 Female
Rita 30 Photography 54.000 Female
Magnus 25 Freelancer 65.000 Male
Johnny 29 Freelancer 63.000 Male

initTableWidget('myTable',500,250,Array('S','N',false,'N','S'));

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

(0)

相关推荐

  • 实现超用户体验 table排序javascript实现代码

    以前我在网上总会看类似这种的JS效果: 点击编辑时: (不好意思哈,图在文章最后面) 这种列表与编辑都在同一页的效果,确实很好,能够给用户带来意想不到的美好体验.可是它是怎么实现的呢? 其实实现这种效果有很多方法,当然如果你的JS不好,可以用JQuery的组件,但是我想要是自己能写出来总是好的.因此我抽了点时间来实现它.当我实现后,发现要实现这种效果是很简单的,几行JS代码就搞定了,关键就是一个思路问题,下面我会具体的写是怎么实现的. 总体思路:给<TR>一个ID,以显示与隐藏来实现这种效果.

  • 一实用的实现table排序的Javascript类库

    一个Javascript 的类库,用于table内容排序.使用很方便,不用每次都去调用数据库了. 特别适合多表查询的排序.加上<tbody>的style.display 切换,也可以实现分页. 效果演示 用法: 1.添加JS <SCRIPT src="sorttable.js" type="text/javascript"></SCRIPT> 2.添加TABLE,注意的是:一定要有ID,class为"sortable&q

  • javascript实现Table排序的方法

    本文实例讲述了javascript实现Table排序的方法.分享给大家供大家参考.具体实现方法如下: <!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"&

  • javascript 实现简单的table排序及table操作练习

    在这个列子中,练习了table的操作,主要有:tBodies.rows.cells,还有有关数组的排序方法:sort 先上代码: 复制代码 代码如下: <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>table排序</title> </head> <body> <table id="tableTest&q

  • javascript小组件 原生table排序表格脚本(兼容ie firefox opera chrome)

    首先创建html页面为sort.html ,并把下面的内容复制进去 复制代码 代码如下: <!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"> &l

  • JavaScript Table排序 2.0 (更新)

    近来还是那么忙,趁五一更新一下程序吧. 这个版本主要增加和改进了以下东西: 1,对字符串改用localeCompare来比较: 2,一次排序中能使用多个排序对象(用于值相等时再排序): 3,修正一些发现的问题: 4,改进程序结构,个人觉得是更灵活更方便了: 5,增加bool类型比较: 6,添加attribute/property的内容: 7,修正ie6/7的radio/checkbox状态恢复bug: 8,增加自定义取值函数. Table 排序 .odTable { width:500px; b

  • javascript table排序 这个更简单了,不用改变现在的表格结构

    JavaScript实现可自定义排序的表格 - BODY { FONT-SIZE: 0.8em; FONT-FAMILY: Trebuchet MS, Lucida Sans Unicode, Arial, sans-serif } P { FONT-WEIGHT: bold; MARGIN-BOTTOM: 0px } .tableWidget_headerCell { BORDER-RIGHT: #aca899 1px solid; BORDER-LEFT: #fff 1px solid; C

  • JavaScript中几种排序算法的简单实现

    排序算法的实现 我的JS水平就是渣渣,所以我就用类似于JAVA和C的方式来写JavaScript的排序算法了. 而且这里我不讲算法原理,仅仅只是代码实现,可能会有Bug,欢迎大家博客评论指导. 插入排序 插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法.它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入.插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已

  • 用jquery.sortElements实现table排序

    项目中要实现table排序的功能. 网上有很多解决方案,很多都基于jQuery. jquery.tablesorter,大小17KB,不过他的首页在ie10下兼容性有点问题. DataTables,大小75KB,功能强大,带分页,搜索等功能. 还有插件叫sortElements,很小巧,只有3KB,兼容性也不错,而且在Github上有818个星. 最后我选择用sortElements,实现很简单: 1. 引入jQuery 复制代码 代码如下: <script type="text/java

  • JavaScript Table行定位效果

    上次做table排序对table有了一些了解,这次更是深入了解了一番,发现table原来是这么不简单. 还不清楚这个效果叫什么,就叫行定位吧,本来想把列定位也做出来,但暂时还没这个需求,等以后有时间再弄吧. 程序原理 一开始的需求只是表头部分在滚动时能一直固定在头部,那关键要实现的就是让tr能定位. 首先想到的方法是给tr设置relative,用ie6/7测试以下代码: 1 2 3 4 [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 给tr设置relative后就能相对table定位

  • 简单介绍不用库(框架)自己写ajax

    平常会使用ajax来请求数据,加载一个库(框架),或许仅仅maybe就使用了它的ajax部分. 写个ajax,一来可以经历一下处理问题的过程,提升技术能力,二来工作中有时真的用不着这么大的一个库(框架),用自己写的,何乐不为呢. 先来看看流行的jQuery是怎样调用ajax的 $.ajax({ url: 'test.php', //发送请求的URL字符串 type: 'GET', //发送方式 dataType: 'json', //预期服务器返回的数据类型 xml, html, text, j

  • javascript之IE版本检测超简单方法

    近年来随着操作系统的升级以及各种新技术的开发普及,抛弃低版本IE已经是大势所趋,这对于前端人员来时是个好消息,可以不用花费太多的时间来做低版本的兼容,很多站点采用给予低版本IE以提示的方式(恩,很友好很人道)给游客,一般是在header上给一个提示,脚本检测如下: function getIEVersion() { var rv = -1; // Return value assumes failure. if(navigator.appName == 'Microsoft Internet E

  • Javascript下拉刷新的简单实现

    本文实例为大家分享了Javascript下拉刷新的简单实现代码,供大家参考,具体内容如下 Html相关代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimu

随机推荐