<div id="1">1</div> 
<div id="5">5</div> 
<div id="20">20</div> 
<div id="7">7</div>
  <input   type=button   value=倒序   onclick="arrange(1)">   
  <script   language=javascript>   
  div=document.all.tags('div')
  for(i=0;i<div.length;i++)arr[i]=div[i].outerHTML;   
  function   arrange(t){   
        if(t==1){   
                for(i=0;i<div.length;i++)div[i].outerHTML=arr[div.length-i-1]; 
        }
  }   
  </script> 这个代码只是将div倒序了一次,我想要的是让div按id的从小到大排列,请高手指点一下,先谢过了。

解决方案 »

  1.   

    我也不懂,给个讲JS排序的给你看看吧。http://mfemily.spaces.live.com/blog/cns!3b154033ce0cef38!1504.entry
      

  2.   

    利用Array的sort方法对div排序,代码如下:
    <body>
    <div id="1" >1 </div >
    <div id="5" >5 </div >
    <div id="20" >20 </div >
    <div id="7" >7 </div >
    <div id="22" >* </div > 
    </body><script type="text/javascript">
    //<![CDATA[

    //比较两个div的id
    function compare(div1, div2)
    {
    var _id1 = parseInt(div1.getAttribute("id"), 10);
    var _id2 = parseInt(div2.getAttribute("id"), 10);

    if (_id1 > _id2)
    return 1;
    else if (_id1 < _id2)
    return -1;
    else 
    return 0;
    }

    //获取所有的div,并将其放入到Array中
    var divs = document.getElementsByTagName("div");
    var divArray = new Array();

    for (var i = 0; i < divs.length; i++)
    divArray.push(divs[i]);

    //排序
    divArray.sort(compare);

    //将排序的div绑定到页面上
    for (var i = 0; i < divArray.length; i++)
    {
    document.body.appendChild(divArray[i]);
    }
    //]]>
    </script>
      

  3.   

    好像还是不行,比如<div id="1" ><b>1</b> </div >  
    <div id="5" ><u>5</u></div >  
    <div id="20" >20 </div >  
    <div id="7" >7 </div > 里面有修饰的HTML语言,就会出错。是不是appendChild不支持啊?
      

  4.   

    我用<div id="1"> <font color=red>1</div>   
    <div id="2"> <font color=red>2</div>   如果font没有结束,就会出错。
      

  5.   

    使用document.getElementsByTagName函数,前提是html(xml)是格式良好的。
    而:
    <div id="1" >  <font color=red >1 </div >   
    <div id="2" >  <font color=red >2 </div >
    <font>标签没有关闭,不是格式良好的。使用js DOM解析会不正常
      

  6.   

    var div = document.getElementsByTagName("div"); 
    var arr = new Array(); 
    for(i=0;i <div.length;i++)arr[i]=div[i].outerHTML;    
    for(i=0;i <div.length;i++)div[i].outerHTML=arr[div.length-i-1];  这样的话,可以,但只是倒序了下,能不能帮我修改一下?我对JAVA还不太了解,希望前期先领入门一下。