原贴: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帮助里面都有
------解决方案--------------------------------------------------------
哈哈,学习下