javascript新闻列表排序简单封装

来源:互联网 发布:网络不能玩游戏 编辑:程序博客网 时间:2024/05/21 10:57

可以控制列表按日期以及按字数排序.升或者降序.
代码简单封装,按一定的格式调用即可。
代码写的比较繁琐,很多方法用的很原始...
代码如下:

 


 
<!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>
 <title></title>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <meta http-equiv="Content-Language" content="zh-CN" />
 <meta name="Design Corp" content="李军" />
 <meta name="Designer mail" content="
lijunabcxy@163.com" />
</head>
<mce:style type="text/css"><!--
/*<!--[CDATA[*/
  ul,li{margin:0;padding:0;list-style-type:none;}
  ul{width:450px;padding:10px;border:1px solid #ccc;background:#fafafa;line-height:25px; margin:10px;font-size:12px;}
  #news_list li{border-bottom:1px dashed #cde;}
  #news_list span{float:right;}
  #news_list li a{color:#006;}
/*]]>*/
--></mce:style><mce:style type="text/css" mce_bogus="1"><!--
/*<![CDATA[*/
  ul,li{margin:0;padding:0;list-style-type:none;}
  ul{width:450px;padding:10px;border:1px solid #ccc;background:#fafafa;line-height:25px; margin:10px;font-size:12px;}
  #news_list li{border-bottom:1px dashed #cde;}
  #news_list span{float:right;}
  #news_list li a{color:#006;}
/*
*/
--></mce:style><style type="text/css" mce_bogus="1" mce_bogus="1">/*<![CDATA[*/
  ul,li{margin:0;padding:0;list-style-type:none;}
  ul{width:450px;padding:10px;border:1px solid #ccc;background:#fafafa;line-height:25px; margin:10px;font-size:12px;}
  #news_list li{border-bottom:1px dashed #cde;}
  #news_list span{float:right;}
  #news_list li a{color:#006;}
/*
*/</style>
<mce:script type="text/<a href="
http://www<a href=" mce_href="http://www<a href="http://wwwhtmlwind.com" target="_blank"><!--
htmlwind</a>.com" target="_blank">javascript</a>">
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输出
 var c=darry(ary1,ary2);
 var list_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")
}
// --></mce:script>
<body>
 <ul id="news_list">
  <li>
    <span>2005-09-02</span>
    <a href="#" mce_href="#" title="Html和CSS标准指南下载chm版本">网页标准和标准指南下载</a>
  </li>
   <li>
    <span>2005-07-18</span>
   <a href="#" mce_href="#" title="使用模块快速启动你的设计">使用模块快速启动你的</a></dl>
  </li>
  <li>
   <span>2005-01-29</span>
    <a href="#" mce_href="#" title="用模块快速来排列书序啊新闻能吗">使用模块快速来排列书序啊新闻能吗</a>
  </li>
  <li>
   <span>2005-02-15</span>
   <a href="#" mce_href="#" title="SEO基础">SEO基础</a>
  </li>
   <li>
   <span>2005-05-15</span>
   <a href="#" mce_href="#" title="SEO基础世界观人生观理论">SEO基础及世界观人生观理论很长啊啊啊啊啊</a>
  </li> 
 </ul>
 <p><input type="button" value="按字符长度排序" id="button1" /><input type="button" value="按日期排序" id="button2" /></p>
 <h5>简单说明:</h5>
 <ul>
 <li>调用方法:list_sort(list_id,btn1,btn2)</li>
 <li>list_id-- 新闻列表ul的id;</li>
 <li>btn1-- 按字数排序事件的id;</li>
 <li>btn2-- 按日期排序事件的id;</li>
 </ul>
</body>
</html>


 

 

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")
}


 

如果想试试效果的话,自己将两个代码分别保存为html和js格式的文件!

原创粉丝点击