整个表格排序(按时间and汉字)可以按表格中的任意一列排序且保持数据的准确性

以下是整个表格排序原代码 可以直接运行

目录结构 

__根目录 html 文件, class目录, boot.js ,sort.js

-----class目录  _Pinyin.js


-----------------------------------------------------------------------------------------------------------------------------------

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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script type="text/javascript" src="boot.js" loadClass="Pinyin"></script>
<script type="text/javascript" src="sort.js" loadClass="Pinyin"></script>
<script>
var py = new DronFw.Class.Pinyin();//汉字转换成拼音对象
</script>
</head>
<body onload="init()" bgcolor="#0000CC">
<table id="table1" style="background-color:#2b68c5;color:#000000;font-size:13px"  cellspacing="1"  margin="0"width="110%" >
<tr>
<td><a onclick="alarmUp('1')"><font  color="#993366" size="0">升序</font></a> 告警等级 <a onclick="alarmDown('1')"><font  color="#993366" size="0">降序</font> </a></td>
<td><a onclick="byup('2')"><font  color="#993366" size="0">升序</font> </a> 告警基站 <a onclick="bydown('2')"><font  color="#993366" size="0">降序</font> </a></td>
<td><a onclick="byup('3')"><font  color="#993366" size="0">升序</font> </a> 告警设备 <a onclick="bydown('3')"><font  color="#993366" size="0">降序</font> </a></td>
<td><a onclick="bydateUp()"><font  color="#993366" size="0">升序</font> </a> 告警时间 <a onclick="bydateDown()"><font  color="#993366" size="0">降序</font> </a></td>
<td><a onclick="byup('5')"><font  color="#993366" size="0">升序</font> </a> 告警内容 <a onclick="bydown('5')"><font  color="#993366" size="0">降序</font> </a></td>
</tr>
</table>        
</body>
</html>

--------------------------------------------------------------------------------------------------------------------------------

以下是sort.js放在根目录

var num=new Array();
var array1=new Array('紧急','凉城','环境采集控制器','2007-11-29 08:43:01','门窗传感器告警');
var array2=new Array('紧急','凉城','环境采集控制器','2007-11-29 08:43:03','门窗传感器告警');
var array3=new Array('紧急','凉城','环境采集控制器','2007-11-29 08:43:06','门窗传感器告警');
var array4=new Array('重要','大黑河','环境采集控制器','2007-11-29 08:42:57','门窗传感器告警');
var array5=new Array('重要','大黑河','环境采集控制器','2007-11-29 08:42:58','烟雾传感器告警');
var array6=new Array('重要','大黑河','环境采集控制器','2007-11-29 08:42:60','红外传感器告警');
num[0]=array1;
num[1]=array2;
num[2]=array3;
num[3]=array4;
num[4]=array5;
num[5]=array6;
function init()//初始化添加内容
{//得到body的引用
  //创建一个table
  var mytable=document.getElementsByTagName("table").item(0);
  //创建一个tbody
  var mytbody=document.createElement("TBODY");
  //向表格里天加内容
  for(var i=0;i<num.length;i++)
  { var neirong=num[i];
    var mytr=document.createElement("TR");
for(var j=0;j<neirong.length;j++)
{
  var mytd=document.createElement("TD");
  var currtext=document.createTextNode(num[i][j]);
  mytd.appendChild(currtext);//添加列的内容
  mytr.appendChild(mytd);
    }
mytbody.appendChild(mytr);
  }
  mytable.appendChild(mytbody);
  mytable.setAttribute("border","2");
}
function byup(index)//按汉字升序以ASCII码值
{
   var indexof=parseInt(index)-1;//转换成整数
   for(var i=0;i<num.length;i++)//外循环控制比较的次数
   {
     for(var j=0;j<num.length-i-1; j++)//内循环进行每次的比较
   {
       var char1=topChar(num[j][indexof]);//获得汉字首字母
    var char2=topChar(num[j+1][indexof]);
    var ascii1=toAscII(char1);//将字符转换成ASCII码值
    var ascii2=toAscII(char2);
    var ref;//交换变量
    if(ascii1>ascii2)
    {
      ref=num[j];
  num[j]=num[j+1];
  num[j+1]=ref;
    }  
   }
    }
  refurbishTable();
}
function bydown(index)//按汉字降序以ASCII码值
{
   var indexof=parseInt(index)-1;//转换成整数
   for(var i=0;i<num.length;i++)//外循环控制比较的次数
   {
     for(var j=0;j<num.length-i-1; j++)//内循环进行每次的比较
   {
       var char1=topChar(num[j][indexof]);//获得汉字首字母
    var char2=topChar(num[j+1][indexof]);
    var ascii1=toAscII(char1);//将字符转换成ASCII码值
    var ascii2=toAscII(char2);
    var ref;//交换变量
    if(ascii1<ascii2)
    {
      ref=num[j];
  num[j]=num[j+1];
  num[j+1]=ref;
    }  
   }
    }
  refurbishTable();
}
function topChar(china)//返回汉字首字母
{
   var char=py.Get(china);
   return char.charAt(0);
}
function toAscII(char)//返回字符的ASCII码值
{
var c=char.toUpperCase();//转换大写
return c.charCodeAt()//转换成字符的ASCII码值
}

function alarmUp(index)//按报警等级升序
{
var indexof=parseInt(index)-1;//转换成整数
for(var i=0;i<num.length;i++)//外循环控制比较的次数
{
   for(var j=0;j<num.length-i-1;j++)//内循环进行每次的比较
    {
    var Grade1=alarmGrade(num[j][indexof]);
    var Grade2=alarmGrade(num[j+1][indexof]);
    var ref;//交换变量
    if(Grade1>Grade2)
    {
     ref=num[j];
  num[j]=num[j+1];
  num[j+1]=ref;
       }
    } 
}
refurbishTable();
}
function alarmDown(index)//按报警等级降序
{
var indexof=parseInt(index)-1;//转换成整数
for(var i=0;i<num.length;i++)//外循环控制比较的次数
{
   for(var j=0;j<num.length-i-1;j++)//内循环进行每次的比较
    {
    var Grade1=alarmGrade(num[j][indexof]);
    var Grade2=alarmGrade(num[j+1][indexof]);
    var ref;//交换变量
    if(Grade1<Grade2)
    {
     ref=num[j];
  num[j]=num[j+1];
  num[j+1]=ref;
       }
    } 
}
refurbishTable();
}
function alarmGrade(alarm_msg)//报警等级转换
{
     if(alarm_msg=="紧急")
  {
   return 1;
      }else if(alarm_msg="重要")
     {
        return 2;
     }else
  {
    return 3;
         }
}
function bydateUp()//按日期升序
{
for(var i=0;i<num.length;i++)//外循环控制比较的次数
{
   for(var j=0;j<num.length-i-1;j++)//内循环进行每次的比较
    {
    var date1=parseDate(num[j][3]);
    var date2=parseDate(num[j+1][3]);
    var ref;//交换变量
    if(date1>date2)
    {
     ref=num[j];
  num[j]=num[j+1];
  num[j+1]=ref;
       }
    } 
}
refurbishTable();
}
function bydateDown()//按日期降序
{
for(var i=0;i<num.length;i++)//外循环控制比较的次数
{
   for(var j=0;j<num.length-i-1;j++)//内循环进行每次的比较
    {
    var date1=parseDate(num[j][3]);
    var date2=parseDate(num[j+1][3]);
    var ref;//交换变量
    if(date1<date2)
    {
     ref=num[j];
  num[j]=num[j+1];
  num[j+1]=ref;
       }
    } 
}
refurbishTable();
}
function parseDate(date)//转换日期 如2007-11-29 08:43:06--20071129084306
{
var arr=date.split(/(-|:|( ))/);
var str=arr[0]+arr[1]+arr[2]+arr[3]+arr[4]+arr[5];
var date=parseInt(str);
return date;
}
function refurbishTable()//刷新表格
{  //得到id为table1节点
    var mytable=document.getElementById('table1');
//得到table1的所有tr字节点
var mytr=mytable.getElementsByTagName("tr");
for(var i=1;i<mytr.length;i++)
{ //得到tr的所有td的节点
      var mytd=mytr[i].getElementsByTagName("td");
   for(var j=0;j< mytd.length;j++)
   {
       mytd[j].firstChild.nodeValue=num[i-1][j];
    }
}
}

_________________________________________________________________________________
_Pinyin.js汉字转换拼音    放入根目录的classes文件夹下
DronFw.Class.Pinyin = function ()
{
var words ="a-20319-ai-20317-an-20304-ang-20295-ao-20292-ba-20283-bai-20265-ban-20257-bang-20242-bao-20230-bei-20051-ben-20036-beng-20032-bi-20026-bian-20002-biao-19990-bie-19986-bin-19982-bing-19976-bo-19805-bu-19784-ca-19775-cai-19774-can-19763-cang-19756-cao-19751-ce-19746-ceng-19741-cha-19739-chai-19728-chan-19725-chang-19715-chao-19540-che-19531-chen-19525-cheng-19515-chi-19500-chong-19484-chou-19479-chu-19467-chuai-19289-chuan-19288-chuang-19281-chui-19275-chun-19270-chuo-19263-ci-19261-cong-19249-cou-19243-cu-19242-cuan-19238-cui-19235-cun-19227-cuo-19224-da-19218-dai-19212-dan-19038-dang-19023-dao-19018-de-19006-deng-19003-di-18996-dian-18977-diao-18961-die-18952-ding-18783-diu-18774-dong-18773-dou-18763-du-18756-duan-18741-dui-18735-dun-18731-duo-18722-e-18710-en-18697-er-18696-fa-18526-fan-18518-fang-18501-fei-18490-fen-18478-feng-18463-fo-18448-fou-18447-fu-18446-ga-18239-gai-18237-gan-18231-gang-18220-gao-18211-ge-18201-gei-18184-gen-18183-geng-18181-gong-18012-gou-17997-gu-17988-gua-17970-guai-17964-guan-17961-guang-17950-gui-17947-gun-17931-guo-17928-ha-17922-hai-17759-han-17752-hang-17733-hao-17730-he-17721-hei-17703-hen-17701-heng-17697-hong-17692-hou-17683-hu-17676-hua-17496-huai-17487-huan-17482-huang-17468-hui-17454-hun-17433-huo-17427-ji-17417-jia-17202-jian-17185-jiang-16983-jiao-16970-jie-16942-jin-16915-jing-16733-jiong-16708-jiu-16706-ju-16689-juan-16664-jue-16657-jun-16647-ka-16474-kai-16470-kan-16465-kang-16459-kao-16452-ke-16448-ken-16433-keng-16429-kong-16427-kou-16423-ku-16419-kua-16412-kuai-16407-kuan-16403-kuang-16401-kui-16393-kun-16220-kuo-16216-la-16212-lai-16205-lan-16202-lang-16187-lao-16180-le-16171-lei-16169-leng-16158-li-16155-lia-15959-lian-15958-liang-15944-liao-15933-lie-15920-lin-15915-ling-15903-liu-15889-long-15878-lou-15707-lu-15701-lv-15681-luan-15667-lue-15661-lun-15659-luo-15652-ma-15640-mai-15631-man-15625-mang-15454-mao-15448-me-15436-mei-15435-men-15419-meng-15416-mi-15408-mian-15394-miao-15385-mie-15377-min-15375-ming-15369-miu-15363-mo-15362-mou-15183-mu-15180-na-15165-nai-15158-nan-15153-nang-15150-nao-15149-ne-15144-nei-15143-nen-15141-neng-15140-ni-15139-nian-15128-niang-15121-niao-15119-nie-15117-nin-15110-ning-15109-niu-14941-nong-14937-nu-14933-nv-14930-nuan-14929-nue-14928-nuo-14926-o-14922-ou-14921-pa-14914-pai-14908-pan-14902-pang-14894-pao-14889-pei-14882-pen-14873-peng-14871-pi-14857-pian-14678-piao-14674-pie-14670-pin-14668-ping-14663-po-14654-pu-14645-qi-14630-qia-14594-qian-14429-qiang-14407-qiao-14399-qie-14384-qin-14379-qing-14368-qiong-14355-qiu-14353-qu-14345-quan-14170-que-14159-qun-14151-ran-14149-rang-14145-rao-14140-re-14137-ren-14135-reng-14125-ri-14123-rong-14122-rou-14112-ru-14109-ruan-14099-rui-14097-run-14094-ruo-14092-sa-14090-sai-14087-san-14083-sang-13917-sao-13914-se-13910-sen-13907-seng-13906-sha-13905-shai-13896-shan-13894-shang-13878-shao-13870-she-13859-shen-13847-sheng-13831-shi-13658-shou-13611-shu-13601-shua-13406-shuai-13404-shuan-13400-shuang-13398-shui-13395-shun-13391-shuo-13387-si-13383-song-13367-sou-13359-su-13356-suan-13343-sui-13340-sun-13329-suo-13326-ta-13318-tai-13147-tan-13138-tang-13120-tao-13107-te-13096-teng-13095-ti-13091-tian-13076-tiao-13068-tie-13063-ting-13060-tong-12888-tou-12875-tu-12871-tuan-12860-tui-12858-tun-12852-tuo-12849-wa-12838-wai-12831-wan-12829-wang-12812-wei-12802-wen-12607-weng-12597-wo-12594-wu-12585-xi-12556-xia-12359-xian-12346-xiang-12320-xiao-12300-xie-12120-xin-12099-xing-12089-xiong-12074-xiu-12067-xu-12058-xuan-12039-xue-11867-xun-11861-ya-11847-yan-11831-yang-11798-yao-11781-ye-11604-yi-11589-yin-11536-ying-11358-yo-11340-yong-11339-you-11324-yu-11303-yuan-11097-yue-11077-yun-11067-za-11055-zai-11052-zan-11045-zang-11041-zao-11038-ze-11024-zei-11020-zen-11019-zeng-11018-zha-11014-zhai-10838-zhan-10832-zhang-10815-zhao-10800-zhe-10790-zhen-10780-zheng-10764-zhi-10587-zhong-10544-zhou-10533-zhu-10519-zhua-10331-zhuai-10329-zhuan-10328-zhuang-10322-zhui-10315-zhun-10309-zhuo-10307-zi-10296-zong-10281-zou-10274-zu-10270-zuan-10262-zui-10260-zun-10256-zuo-10254".split("-");

if (!window.getASC)
{
  window.execScript("function getASC(n) : getASC=asc(n) : end function", "VBScript");
}

function getpinyin(n)
{
  for(var i=words.length-1; i>0; i-=2) if (words[i] * (-1) <= n) return words[i-1];
  return "?";
}
this.Get = function (str)
{
  var r = [];
  for (var i=0; i<str.length; i++)
  {
   var as = getASC(str.charAt(i));
   var w;
   if (as>0 && as<160) w = str.charAt(i);
   else if (as<-20319 || as>-10247) w = str.charAt(i);
   else w = getpinyin(as);
   r[r.length] = w;
  }
  r = r.join(" ");
  return r;
}
}

----------------------------------------------------------------------------------------------------------------------------------------

boot.js 汉字转换拼音 放在根目录

/*Dron Framework Boot File (Version:2.8.2)@2003-2008 Ucren.com All rights reserved.*/(function(w,tax,o,s,gaf,acf,apf,ca,wa,ip){var xo=tax();if(!xo){w.alert("DronFw无法正常运行,可能原因:\n1) 浏览器的安全级别调得过高\n2) 浏览器被第三方软件禁用AX");return };if(o){o.Class={};o.Path=gaf(s,"src").replace("boot.js","");o.JsPath="jsfiles";o.Call=function(us){return ca(o.JsPath,us)};o.Wait=function(uc,uf){return wa(uc,uf,this)};o.Import=function(us){return ip(o.Path+"classes","_"+us,xo)}}else o=w.DronFw;var cl,pl;cl=gaf(s,"loadClass");cl&&acf(cl.split(";"),o.Import);pl=gaf(s,"loadPrototype");pl&&apf(o.Path+"prototypes",pl.split(";"),ip,xo);w.$||(w.$=function(us){return document.getElementById(us)})})(window,function(){var ie=/msie/i.test(navigator.userAgent);if(ie){for(var i=0;i<5;i++){try{var xo=new ActiveXObject(["Msxml2.XMLHTTP.5.0","Msxml2.XMLHTTP.4.0","Msxml2.XMLHTTP.3.0","MSXml2.XMLHTTP","Microsoft.XMLHTTP"][i]);return xo}catch(e){}};return false}else{try{var xo=new XMLHttpRequest();return xo}catch(e){return false}}},(function(){if(window.DronFw)return false;window.DronFw={};return window.DronFw})(),(function(){var s=document.getElementsByTagName("script");return s[s.length-1]})(),function(o,s){return o.getAttribute(s)},function(t,f){for(var i in t)f(t[i])},function(p,t,f,o){for(var i in t)f(p,"_"+t[i],o)},function(p,s){var n=document.createElement("script");var h=document.getElementsByTagName("head");n.type="text/javascript";n.src=p+"/"+s+".js";h&&h[0].appendChild(n)},function(c,f,o){if(c())return f();setTimeout(function(){o.Wait(c,f)},50)},function(p,s,o){o.open("get",p+"/"+s+".js",false);o.send(null);if(o.status==0||o.status==200)(new Function(o.responseText))()});

你可能感兴趣的:(数据结构,浏览器,F#,IE,J#)