js中对数组的排序问题
对这样的结构进行从小到大的排序
<input id="btn1" type="button" value="排序" />
<ul class="ul1">
<li>34</li>
<li>12</li>
<li>18</li>
<li>2</li>
<li>9</li>
</ul>
用sort函数就能完成了
<script>
window.onload=function ()
{
var oUl1=document.getElementById('ul1');
var oBtn=document.getElementById('btn1');
oBtn.onclick=function ()
{
var aLi=oUl1.getElementsByTagName('li');
//aLi.sort();
var arr=[];
for(var i=0;i<aLi.length;i++)
{
arr[i]=aLi[i];
}
arr.sort(function (li1, li2){
var n1=parseInt(li1.innerHTML);
var n2=parseInt(li2.innerHTML);
return n1-n2;
});
//alert(arr[0].innerHTML);
for(var i=0;i<arr.length;i++)
{
alert('该把'+arr[i].innerHTML+'插入到最后');
oUl1.appendChild(arr[i]);
}
};
};
</script>
<ul id="ul1">
<li>34</li>
<li>25</li>
<li>9</li>
<li>88</li>
<li>54</li>
</ul>
</body>
</html>
但是里面有其他的结构 或者有更多嵌套的结构 还有就是根据另外一组数字的排行来排列一组列表的结构
求教是怎么写的
<ul class="ul1">
<li><span>34</span></li>
<li><span>25</span></li>
<li><span>9</span></li>
<li><span>88</span></li>
<li><span>54</span></li>
</ul>
------解决方案--------------------dom.childNodes只会获得子节点 而不是后代节点 如果排序不想算上后代节点可以这样做
排序规则可以你自己定 根据数字定义不同的排序规则试试
------解决方案--------------------循环 判断hasChildNodes