Auntion-TableSort javascript类文件第1/2页

tableSort.class.js


代码如下:

/*
*    表格名不能为空,可为已获取的对象或名字
*    表头名默认为:tag
*    通过自行编写接口可实现不同的触发排序方式
*    
*    作者:Auntion
*    E-mail:Auntion@Gmail.com
*    OICQ:82874972
*    
*    日期:2007年04月22日 - 测试 - 待修正
*/

var tableSort= function(element,tagName,upStyle,downStyle){this.table= (typeof(element) == 'string') ? TAGDom.fromId(element) : element;this.td   = this.table.getElementsByTagName("td");    this.hName= (tagName.length<1) ? "tag" : tagName;this.rows = this.table.rows;this.byUp = (upStyle == undefined) ? "DescUp" : upStyle ;this.byDown = (downStyle == undefined) ? "DescDown" : downStyle ;var totalTd = [];var totalNr = [];var totalTag= [];this.tempCellIndex;    this.tempStatus = {};var setAllTag = function(){                    for(var i = 0; i < this.td.length; i++){if(this.td[i].className === this.hName) totalTag.push(this.td[i]);}}.bind(this);var getStatus = function(tagName){this.tempStatus[tagName] = (this.tempStatus[tagName] == true) ? false : true;for(tags in this.tempStatus){if(tags == tagName) return this.tempStatus[tags];else delete this.tempStatus[tags];}}.bind(this);var changeShow = function(cellIn,status){for(var i=0; i<totalTag.length; i++){if(totalTag[i].cellIndex == cellIn){if(status == true) totalTag[i].className = this.byUp;else if(status == false) totalTag[i].className = this.byDown;}else{totalTag[i].className = this.hName;}}}.bind(this);var startSort = function(status){for (var i = totalNr[this.tempCellIndex].length - 1; i > 0; i--){for (var j = 0; j < i; ++j){if ( (status == true) ? totalNr[this.tempCellIndex][j] > totalNr[this.tempCellIndex][j + 1] : totalNr[this.tempCellIndex][j] < totalNr[this.tempCellIndex][j + 1] ){var temp = totalNr[this.tempCellIndex][j + 1];totalNr[this.tempCellIndex][j + 1] = totalNr[this.tempCellIndex][j];totalNr[this.tempCellIndex][j] = temp;for(var n=0; n<totalNr.length; n++){if(n != this.tempCellIndex){var temps = totalNr[n][j+1];totalNr[n][j + 1] = totalNr[n][j];totalNr[n][j] = temps;}}}}};InsertContect();}.bind(this);var InsertContect = function(){                for(var i=0; i<totalTd.length; i++){for(var j=0; j<totalTd[i].length; j++){totalTd[i][j].innerHTML = totalNr[i][j];}};totalTd.length = 0;totalNr.length = 0;};this.init = function(status){for(var i=0; i<(this.td.length/this.rows.length); i++){totalTd[i] = new Array();totalNr[i] = new Array();for(var j=0; j<this.rows.length; j++){if(this.rows[j].cells[i].className !== this.hName){totalTd[i][j-1] = this.rows[j].cells[i];if(IsNumber(this.rows[j].cells[i].innerHTML) == true){totalNr[i][j-1] = parseInt(this.rows[j].cells[i].innerHTML);}else{totalNr[i][j-1] = this.rows[j].cells[i].innerHTML;}}}}startSort(status);}

/********************************************************************************************************************************/

/**通过点击标签触发排序事件**/
    //public: 通过默认鼠标事键触发 (interface example)(设置用户接口的范例)
    this.toTagStart = function(){        
        setAllTag();    //获取标签
        for(var i=0; i<totalTag.length; i++){        
            totalTag[i].sIndex  = function(cIndex){ this.tempCellIndex=cIndex }.bind(this);    //设置列index
            totalTag[i].gStatus = function(values){ return getStatus(values) };                //获取与设置状态
            totalTag[i].ceShow  = function(i,s){ changeShow(i,s) };                            //改变显示的东西
            totalTag[i].stSort  = function(status){ this.init(status) }.bind(this);            //初始化
            totalTag[i].onselectstart = function(){ return false };                //点击不选中文字
            totalTag[i].onclick = function(){
                this.sIndex(this.cellIndex);
                this.status = this.gStatus(this.firstChild.nodeValue);
                this.ceShow(this.cellIndex,this.status);
                this.stSort(this.status);
            }

}
    }

}

Language.ext.js


代码如下:

/*
*
By Auntion

QQ:82874972

Blog:Auntion@blogbus.com

Email:Auntion@Gmail.com

请勿删除此部分注释.谢谢!

ver date-2007-02-01
*
*/
var isIe = /msie/i.test(navigator.userAgent);
var TAGDom = {
    fromId: function(i){
        return document.getElementById(i);
    },
    fromName: function(i){
        return document.getElementById(i);
    },
    fromClass: function(className,baseId) {
        this.fatherId = null;
        if(!baseId){
            this.fatherId = document;
        }else{
            this.fatherId = DOM.fromId(baseId);
        }
        var basic = fatherId.getElementsByTagName("*") || document.all; 
        var child = null;
        var classNames = null;

var aggregate = []; 
        for (var i = 0; i < basic.length; i++) {
            child = basic[i]; 
            classNames = child.className.split(" "); 
            for (var j = 0; j < classNames.length; j++) {
                if (classNames[j] == className) { 
                    aggregate.push(child); 
                    break; 
                }
            } 
        } 
        return aggregate; 
    }
};
function externalStyle (element, target) {      
    this.setReturn;
    if (element.currentStyle){    
        this.setReturn = element.currentStyle[target];    
    }else if (window.getComputedStyle){
        this.setReturn = getComputedStyle (element,"").getPropertyValue(target);
    }
    return this.setReturn;
}
String.prototype.toInt = function(){
    return parseInt(this.replace(/[a-zA-Z]+/,''));
}
String.prototype.trim = function(){
    return this.replace(/(^\s*)|(\s*$)/g, "");
}
Function.prototype.bind = function(e) {
    var source = this;
    return function() {
        return source.apply(e,arguments);
    }
}
function IsNumber(_str){ 
    var tmp_str = _str.trim(); 
    var pattern = /^(-  ¦\+)?\d+(\d+)?$/;
    return pattern.test(tmp_str);   
}

使用实例_1.htm

当前1/2页 12下一页阅读全文

(0)

相关推荐

  • 基于jquery的表格排序

    很多高手也位jquery写了专门的排序库,因为自己也想尝试一下, 当然运行速度实在不能接受,但是我会慢慢的把他改进的. 注:这里只是拿出了一部分代码来,查看演示demo 文档载入后给'th'添加click事件. 1. $('th').click(function(){ var date1=(new Date()).getTime() var dataType=$(this).attr('dataType'); 找到点击对象的自定义属性dataType,当然这个不符合W3C的标准是无法通过检验的,

  • 修复jQuery tablesorter无法正确排序的bug(加千分位数字后)

    找到函数: function getElementText(config, node) { var text = ""; if (!node) return ""; if (!config.supportsTextContent) config.supportsTextContent = node.textContent || false; if (config.textExtraction == "simple") { if (config.s

  • jQuery排序插件tableSorter使用方法

    本文实例为大家分享了jQuery排序插件tableSorter的使用方法,供大家参考,具体内容如下 1.先引两个js <script type="text/javascript" src="../js/jquery-1.3.2.min.js"></script> <script type="text/javascript" src="../js/jquery.tablesorter.min.js"

  • Auntion-TableSort国人写的一个javascript表格排序的东西

    Auntion-TableSort最新版 修复了一个数字排序的问题.放出下载 07年5月5日 Auntion TableSort 测试交流第一版 (下一版将会存在部分表格相关特效) ----------------------------------------------------------------------------- 作者:Auntion blog:Auntion.blogbus.com e-mail:Auntion@Gmail.com QQ:82874972 --------

  • Juery解决tablesorter中文排序和字符范围的方法

    本文实例讲述了Juery解决tablesorter中文排序和字符范围的方法.分享给大家供大家参考.具体分析如下: tablesorter是jQuery插件中比较优秀的一款表格排序插件,我相信大家都使用过或有所耳闻,我在这里就不过多介绍了,详细信息可以看看官方网站:http://tablesorter.com/docs/(其中的demo做得比较完整). 在使用了tablesorter开发的几个项目中,发现了两种类型的排序存在问题,如下: 第一个问题是无法对中文字符进行排序,这是因为在对字符排序时,

  • jquery tablesorter.js 支持中文表格排序改进

    代码: 仿一个网友的代码写的,不记得出自哪里了,改成可以支持中文排序,而且支持控件value的排序. 没办法,能力有限,只能... 复制代码 代码如下: //转换器,将列的字段类型转换为可以排序的类型:String,int,float function convert(sValue, sDataType) { switch(sDataType) { case "int": return parseInt(sValue); case "float": return p

  • jquery.tableSort.js表格排序插件使用方法详解

    本文实例为大家分享了jquery.tableSort.js表格排序的具体代码,供大家参考,具体内容如下 1.一定要引jQuery包,所有jq插件都是基于jQuery包的 2.如果想指定哪一栏不排序这样写 $("#mytable").tablesorter({headers:{5:{sorter:false}}}); 第5列的sorter为false就OK了 参考:http://www.jb51.net/article/105217.htm <!DOCTYPE html> &

  • TableSort.js表格排序插件使用方法详解

    本文实例为大家分享了TableSort.js表格排序的具体代码,供大家参考,具体内容如下 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>TableSort</title> <style type="text/css"> table { bor

  • tablesorter.js表格排序使用方法(支持中文排序)

    最近,因为项目需要,对表格排序做了一下摸索,整理如下: 1. 首先,可从官网下载tablesorter.js,但并不支持中文的排序,对其源码进行修改: 部分源码: function sortText(a, b) { return ((a < b) ? -1 : ((a > b) ? 1 : 0)); }; function sortTextDesc(a, b) { return ((b < a) ? -1 : ((b > a) ? 1 : 0)); }; 修改后: function

  • jQuery表格排序组件-tablesorter使用示例

    一.引入文件 复制代码 代码如下: <script type="text/javascript" src="js/jquery.js"></script> <script type="text/javascript" src="js/jquery.tablesorter.js"></script> <!-- 引入以下样式则表头出现排序图标,同时引入图片 --> <

随机推荐