javascript 新闻列表排序简单封装

  代码写的比较繁琐,很多方法用的很原始...

  代码如下:

  

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

  js代码如下:

  

复制代码 代码如下:

  function $(s){

  return document.all?document.all[s]:document.getElementById(s);

  }

  function list_sort(list_id,btn1,btn2){

  var list=$(list_id).getElementsByTagName("li");

  var c_date=$(list_id).getElementsByTagName("span");

  var content=$(list_id).getElementsByTagName("a");

  var date=new Array(),con=new Array,date1=new Array(),con1=new Array,list_con=new Array;

  for (var i=0;i<list.length ;i++ )//将要比较的内容存入数组

  {date1[i]=date[i]=c_date[i].innerHTML;

  list_con[i]=list[i].innerHTML;

  con1[i]=con[i]=content[i].innerHTML.length;

  }

  con.sort(function(x,y){return parseInt(x)-parseInt(y);});//将字符长度排序

  date.sort(function sortDate(a,b)

  {

  return new Date(a.replace(/-/,"/")) - new Date(b.replace(/-/,"/"));

  });//将日期排序.

  function darry(arry1,arry2){//取数组下标函数。

  var b=new Array();

  for (var n=0;n<list.length ;n++ )

  {for (var m=0;m<list.length;m++ )

  {if (arry1[m]==arry2[n]) b[n]=m;

  }

  }

  return b;

  }

  var top=0;//定义排序方向浮标

  $(btn1).onclick=function(){insetHTM(con1,con)}

  $(btn2).onclick=function(){insetHTM(date1,date)}

  function insetHTM(ary1,ary2){ //排序后的html输出到ul中

  var c=darry(ary1,ary2);//取得排序后数组的下标

  var list_html="";//定义变量存储排序后的html

  if (top==0)

  {for (var k=0;k<list.length;k++ )

  {list_html+="<li>"+list_con[c[k]]+"</li>";top=1}

  }

  else

  { for (var k=list.length-1;k>=0;k--)

  {list_html+="<li>"+list_con[c[k]]+"</li>";top=0}

  }

  $(list_id).innerHTML=list_html;

  }

  }

  window.onload=function(){

  list_sort("news_list","button1","button2")

  }