<a href="#" onclick="numsort()">sort by price</a>
<ul id="list">
<li><span class="n">green day</span> <span class="m">100$</span> <span class="time">2008-11-19</span></li>
<li><span class="n">green day</span> <span class="m">250$</span> <span class="time">2008-11-19</span></li>
<li><span class="n">green day</span> <span class="m">600$</span> <span class="time">2008-11-19</span></li>
<li><span class="n">green day</span> <span class="m">500$</span> <span class="time">2008-11-19</span></li>
<li><span class="n">green day</span> <span class="m">400$</span> <span class="time">2008-11-19</span></li>
<li><span class="n">green day</span> <span class="m">300$</span> <span class="time">2008-11-19</span></li>
<li><span class="n">green day</span> <span class="m">200$</span> <span class="time">2008-11-19</span></li>
</ul>
请问这个列表怎么用js按照价格排序 ,点击sort by date后,调用numsort(),请问该怎么写?
然后用oRemove = object.removeChild(oNode)
这个把序列不对的行弄掉,再正确的地方append回去
<ul id="list">
<li><span class="n">green day</span> <span class="m">100$</span> <span class="time">2008-11-19</span></li>
<li><span class="n">green day</span> <span class="m">250$</span> <span class="time">2008-11-19</span></li>
<li><span class="n">green day</span> <span class="m">600$</span> <span class="time">2008-11-19</span></li>
<li><span class="n">green day</span> <span class="m">500$</span> <span class="time">2008-11-19</span></li>
<li><span class="n">green day</span> <span class="m">400$</span> <span class="time">2008-11-19</span></li>
<li><span class="n">green day</span> <span class="m">300$</span> <span class="time">2008-11-19</span></li>
<li><span class="n">green day</span> <span class="m">200$</span> <span class="time">2008-11-19</span></li>
</ul>
<script>
var l=document.getElementById("list")
var list=l.getElementsByTagName("li"),n=list.length;
var list2=[]
for(var i=0;i<n;i++){
var li=list[i];
list2[i]={p:parseFloat(li.getElementsByTagName("span")[1].innerHTML),e:li}
}function numsort(){
list2.sort(function(o1,o2){return o1.p-o2.p})
for(var i=0;i<n;i++){
l.appendChild(list2[i].e);
}
}
</script>
function numsort(){
var obj=document.getElementById("list")
var li =obj.getElementsByTagName("li");
var m;
for(var i=li.length-1;i>=0;i--){
m=li[i];
for(var j=i;j>=0;j--){
if(li[j].getElementsByTagName("span")[1].innerHTML<
m.getElementsByTagName("span")[1].innerHTML){
m=li[j]
}
}
obj.appendChild(m);
}
};
</script> <a href="#" onclick="numsort()">sort by price</a>
<ul id="list">
<li><span class="n">green day</span> <span class="m">100$</span> <span class="time">2008-11-19</span></li>
<li><span class="n">green day</span> <span class="m">250$</span> <span class="time">2008-11-19</span></li>
<li><span class="n">green day</span> <span class="m">600$</span> <span class="time">2008-11-19</span></li>
<li><span class="n">green day</span> <span class="m">500$</span> <span class="time">2008-11-19</span></li>
<li><span class="n">green day</span> <span class="m">400$</span> <span class="time">2008-11-19</span></li>
<li><span class="n">green day</span> <span class="m">300$</span> <span class="time">2008-11-19</span></li>
<li><span class="n">green day</span> <span class="m">200$</span> <span class="time">2008-11-19</span></li>
</ul>
function numsort(){
var obj=document.getElementById("list")
var li =obj.getElementsByTagName("li");
var m;
for(var i=li.length-1;i>=0;i--){
m=li[i];
for(var j=i;j>=0;j--){
var d1=new Date(li[j].getElementsByTagName("span")[2].innerHTML.replace("-","/"));
var d2=new Date(m.getElementsByTagName("span")[2].innerHTML.replace("-","/"));
if(d1<d2){
m=li[j]
}
}
obj.appendChild(m);
}
};
</script> <a href="#" onclick="numsort()">sort by price</a>
<ul id="list">
<li><span class="n">green day</span> <span class="m">100$</span> <span class="time">2008-11-19</span></li>
<li><span class="n">green day</span> <span class="m">250$</span> <span class="time">2008-11-18</span></li>
<li><span class="n">green day</span> <span class="m">600$</span> <span class="time">2008-11-17</span></li>
<li><span class="n">green day</span> <span class="m">500$</span> <span class="time">2008-11-29</span></li>
<li><span class="n">green day</span> <span class="m">400$</span> <span class="time">2008-11-10</span></li>
<li><span class="n">green day</span> <span class="m">300$</span> <span class="time">2008-11-09</span></li>
<li><span class="n">green day</span> <span class="m">200$</span> <span class="time">2008-11-14</span></li>
</ul>
CODE:<a href="#" onclick="numsort(true)">sort by price</a><br><br>
<a href="#" onclick="numsort(false)">sort by times</a><ul id="list">
<li><span class="n">green day</span> <span class="m">100$</span> <span class="time">2008-11-19</span></li>
<li><span class="n">green day</span> <span class="m">250$</span> <span class="time">2008-11-18</span></li>
<li><span class="n">green day</span> <span class="m">600$</span> <span class="time">2008-11-17</span></li>
<li><span class="n">green day</span> <span class="m">500$</span> <span class="time">2008-11-29</span></li>
<li><span class="n">green day</span> <span class="m">400$</span> <span class="time">2008-11-10</span></li>
<li><span class="n">green day</span> <span class="m">300$</span> <span class="time">2008-11-09</span></li>
<li><span class="n">green day</span> <span class="m">200$</span> <span class="time">2008-11-14</span></li>
</ul><script type=text/javascript>
function numsort(bool){
var i = bool ? 0 : 1,
reg = bool ? new RegExp("[^>]+(?=\\$)","gi") : new RegExp("[^-]+(?=<\\/span>)","gi"),
arr = document.getElementById("list").innerHTML.match(/<li[\S|\s]*?\/li>/g).sort(function(x,y){
return parseInt(x.match(reg)[i]) - parseInt(y.match(reg)[i])
});
document.getElementById("list").innerHTML = arr.join("");
}
</script>
不用正则的代码如下,IE8可用 <a href="#" onclick="numsort(true)">sort by price </a> <br> <br>
<a href="#" onclick="numsort(false)">sort by times </a> <ul id="list">
<li> <span class="n">green day </span> <span class="m">100$ </span> <span class="time">2008-11-19 </span></li>
<li> <span class="n">green day </span> <span class="m">250$ </span> <span class="time">2008-11-18 </span></li>
<li> <span class="n">green day </span> <span class="m">600$ </span> <span class="time">2008-11-17 </span></li>
<li> <span class="n">green day </span> <span class="m">500$ </span> <span class="time">2008-11-29 </span></li>
<li> <span class="n">green day </span> <span class="m">400$ </span> <span class="time">2008-11-10 </span></li>
<li> <span class="n">green day </span> <span class="m">300$ </span> <span class="time">2008-11-09 </span></li>
<li> <span class="n">green day </span> <span class="m">200$ </span> <span class="time">2008-11-14 </span></li>
</ul> <script type=text/javascript>
function numsort(bool){
var field = bool ? 1 : 2;
var obj=document.getElementById("list");
var li =obj.getElementsByTagName("li");
var m,d1,d2;
for(var i=li.length-1;i>=0;i--){
m=li[i];
for(var j=i;j>=0;j--){
if(!bool) {
d1=new Date(li[j].getElementsByTagName("span")[2].innerHTML.replace("-","/"));
d2=new Date(m.getElementsByTagName("span")[2].innerHTML.replace("-","/"));
} else {
d1 = li[j].getElementsByTagName("span")[1].innerHTML;
d2 = m.getElementsByTagName("span")[1].innerHTML;
}
if(d1<d2){
m=li[j]
}
}
obj.appendChild(m);
}
}
</script>
var field = bool ? 1 : 2;
var obj=document.getElementById("list");
var li =obj.getElementsByTagName("li");
var m;
for(var i=li.length-1;i>=0;i--){
m=li[i];
for(var j=i;j>=0;j--){
var d1 = bool ? li[j].getElementsByTagName("span")[1].innerHTML : new Date(li[j].getElementsByTagName("span")[2].innerHTML.replace("-","/"));
var d2 = bool ? m.getElementsByTagName("span")[1].innerHTML : new Date(m.getElementsByTagName("span")[2].innerHTML.replace("-","/"));
if(d1<d2){
m=li[j];
}
}
obj.appendChild(m);
}
}
var obj=document.getElementById("list")
var li =obj.getElementsByTagName("li");
var li2 = new Array();
for(var i=0;i<li.length;i++){
var date = Date.parse(li[i].getElementsByTagName('span')[2].innerHTML.replace(/-/g,"/"));
li2[i] = {t:date,e:li[i]};
}
li2.sort(function(o1, o2){return o1.t - o2.t});
li2.reverse();
for(var i=0;i<li.length;i++){
obj.appendChild(li2[i].e);
}}
同时,我很想确定在IE8.0中“document.getElementById("list").innerHTML”获取字符串是否真的存在该问题(BUG),我把“ul”标签换成“div”也一样的,或者是我的IE8.0没安装好?还请帮忙“alert(document.getElementById("list").innerHTML)”一下下。