您的位置:首页 > Web前端 > JavaScript

javascript新闻列表排序简单封装

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

<!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
) b
=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
) b
=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格式的文件!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: