日期:2014-05-19  浏览次数:20540 次

|M| 200分求:幕白兄写的一段JS代码说明 谢谢
原贴:http://community.csdn.net/Expert/topic/5407/5407220.xml?temp=.1840174
以下是我的注释
<script   type= "text/javascript ">  
    function   GoSort()
    {
          //声明数据变量ary
          var   ary   =   new   Array();
          //循环table1   其中的i=1为table的第二行,因为第一行为标题,length-1因为最后一行为总计   这两行不在排序之内
          for(var   i=1;i <table1.rows.length-1;i++)
          {
                    //这里是给ary数组赋值,但我不明白的是,我的table有三列,为什么这里只用了一个得到那个要排序的金额还有table1.rows[i]这个有什么用
                  ary[i]   =   new   Array(parseInt(table1.rows[i].cells[1].childNodes[1].innerHTML),table1.rows[i]);
          }
          //调用sort这里面完全看不懂
          ary   =   ary.sort(DoSort);                                                                                  
          //循环ary数组
          for(var   i=0;i <ary.length-1;i++)
        {  
              //这里不知道干什么
              table1.moveRow(ary[i][1].rowIndex,i+1);
        }
    }
    function   DoSort(e1,e2)
    {
        //调用sort这里面完全看不懂   e1,e2是干什么用的
          return   e2[0]   -e1[0];
    }          
</script>
谢谢

------解决方案--------------------
function GoSort() { //声明数据变量ary var ary = new Array(); //循环table1 其中的i=1为table的第二行,因为第一行为标题,length-1因为最后一行为总计 这两行不在排序之内 for(var i=1;i <table1.rows.length-1;i++) { //这里是给ary数组赋值,但我不明白的是,我的table有三列,为什么这里只用了一个得到那个要排序的金额还有table1.rows[i]这个有什么用 ary[i] = new Array(parseInt(table1.rows[i].cells[1].childNodes[1].innerHTML),table1.rows[i]); /***********************************是按金额排序,这个作为标准, 把当前的tr放在数据中,好处是在moveRow 的时候通过这个tr可取它变化后的rowIndex就是行的索引,如果是传当前的rowIndex, 当作一次moveRow后就全部变化了******************************************/ } //调用sort这里面完全看不懂 ary = ary.sort(DoSort); /*********************这里不用返回也可以,ary.sort( DoSort)就可,对这个数组排序, DoSort是一个自定义的函数,用来制定排序标准********************************/ //循环ary数组 for(var i=0;i <ary.length-1;i++) { //这里不知道干什么 table1.moveRow(ary[i][1].rowIndex,i+1); /********************************** ary[i][1]是保存的tr. tr的rowIndex是源行,i+1 是移动的目标的行数. 此时数据是按金额大小排序了的.这个tr位置将移到 i+1 即从2行开始(头行不考虑) *************************************/ } } function DoSort(e1,e2) { //调用sort这里面完全看不懂 e1,e2是干什么用的 return e2[0] -e1[0]; /******************************e1就是第前数组的前一个对象,e2是另一个,因为这个数据中存的对象也是个数组,我们是按 这个数的第一个元素是金额,按金额大小排序. }
------解决方案--------------------

这些都是基础知识,js和html帮助里面都有
------解决方案--------------------
哈哈,学习下