排序的JS代码

本文介绍了一种使用JavaScript实现的表格数据排序方法,包括移动行、升序和降序排列等功能,并详细解释了如何通过比较函数处理不同类型的表格数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//移动Table中的行
function moveRows(tablebody,startIndex,pos)
{
     var tablerows = tablebody.rows;
   
   
     var curr_id =  tablerows[startIndex].getAttribute('id');
     var next_id =  tablerows[startIndex+pos].getAttribute('id');
     tablerows[startIndex].setAttribute('id',next_id);
     tablerows[startIndex+pos].setAttribute('id',curr_id);

     tablebody.insertBefore(tablerows[startIndex],tablerows[startIndex+pos]);
   
}
//升序排列
function sortTableByAsc(tbody_id,cols_index)
  {
    var tablebody = document.getElementById(tbody_id);
    var tablerows = tablebody.rows;
    for(var i=0;i<tablebody.rows.length-1;i++)
    {
        var lastIndex=0;
        var testValue1=deleteSpecialStr(tablerows[i].cells[cols_index].innerHTML+"");
        var tempValue;
        for(var j=i+1;j<tablebody.rows.length;j++)
        {
            var testValue2=deleteSpecialStr(tablerows[j].cells[cols_index].innerHTML+"");
            if(testValue1>testValue2)
            {               
                testValue1=testValue2;
                lastIndex=j;
            }
        }
        if(lastIndex>0)
        {
            for(var index=lastIndex;index>i;index--)
            {
                moveRows(tablebody,index,-1);
            }
        }
    }
    changeSortFlagImg(cols_index,0);
    setTDClass(tablebody);
  }
//降序排列
function sortTableByDesc(tbody_id,cols_index)
{
    var tablebody = document.getElementById(tbody_id);
    var tablerows = tablebody.rows;
   
    for(var i=0;i<tablebody.rows.length-1;i++)
    {
        var lastIndex=0;
        var testValue1=deleteSpecialStr(tablerows[i].cells[cols_index].innerHTML+"");
        var tempValue;
        for(var j=i+1;j<tablebody.rows.length;j++)
        {
            var testValue2=deleteSpecialStr(tablerows[j].cells[cols_index].innerHTML+"");
            if(testValue1<testValue2)
            {               
                testValue1=testValue2;
                lastIndex=j;
            }
        }
        if(lastIndex>0)
        {
            for(var index=lastIndex;index>i;index--)
            {
                moveRows(tablebody,index,-1);
            }
        }
       
    }
    changeSortFlagImg(cols_index,1);
    setTDClass(tablebody);
}
//删除无效的字符
function deleteSpecialStr(str)
{
    var reg=new RegExp("<.+?>","g");
    str=str.replace(reg,"");
    str=str.replace(new RegExp(",","g"),"");
    str=str.replace(new RegExp("%","g"),"");
    if(str.indexOf("(")>-1)
    {
        str=str.substring(0,str.indexOf("("));
    }
    if(isNaN(Number(str)))
    {
        return str;
    }
    else
    {
        return Number(str);
    }
   
}
var beforeImgId=0;
//改变排序的显示图片
function changeSortFlagImg(colIndex,flag)
{
    var downImgId="sort_img_"+colIndex+"_2";
    var upImgId="sort_img_"+colIndex+"_1";
    var upImgObj=document.getElementById(upImgId);
    var downImgObj=document.getElementById(downImgId);
    if(flag==1)
    {
        upImgObj.src="images/gray_up_arrow.gif";
        downImgObj.src="images/red_down_arrow.gif";
    }
    else
    {
        upImgObj.src="images/red_up_arrow.gif";
        downImgObj.src="images/gray_down_arrow.gif";
    }
    if(Number(beforeImgId)!=Number(colIndex))
    {
        var beforeUpImgId="sort_img_"+beforeImgId+"_1"
        var beforeDownImgId="sort_img_"+beforeImgId+"_2"
       
        var beforeUpImgObj=document.getElementById(beforeUpImgId);
        var beforeDownImgObj=document.getElementById(beforeDownImgId);
        if(beforeUpImgObj&&beforeDownImgObj)
        {
            beforeUpImgObj.src="images/gray_up_arrow.gif";
            beforeDownImgObj.src="images/gray_down_arrow.gif";
        }
       
    }   
    beforeImgId=colIndex;   
}
//改变TD的样式
function setTDClass(obj)
{
    var rowObj=obj.rows;
    for(var i=0;i<rowObj.length;i++)
    {
        var tdclass="l_Content1";
        if(i%2==0)
        {
            tdclass="l_Content2";
        }
        for(var j=0;j<rowObj[i].cells.length;j++)
        {
            var classNameValue=rowObj[i].cells[j].className;
            if(classNameValue.indexOf("_b")>-1)
            {
                rowObj[i].cells[j].innerHTML="<b>"+rowObj[i].cells[j].innerHTML+"</b>";
            }
            rowObj[i].cells[j].className=tdclass;
            if(rowObj[i].name&&rowObj[i].name.indexOf("#")>-1)
            {
                rowObj[i].cells[j].style.backgroundColor=rowObj[i].name;
            }
        }
    }   
}
/**
  * 比较函数
  * param1>param2 return 1
  * param1==param2 return 0   
  * param1<param2 return -1
  */   
  function compareFunc(param1,param2)
  {
      //2个参数都是字符串,取第一个字符比较
      if(isNaN(param1)&&isNaN(param2))
      {
          param1=param1.trim().substring(0,1);
          param2=param2.trim().substring(0,1);
          return param1.localeCompare(param2);
      }
      //param1 数字; param2 字符串
      if(!isNaN(param1)&&isNaN(param2))
      {
          return -1;
      }
      //param1 字符串; param2 数字   
      if(!isNaN(param2)&&isNaN(param1))
      {
          return 1;
      }
     //2个参数都是数字
      if(!isNaN(param1)&&!isNaN(param2))
      {
          if(Number(param1)>Number(param2)) return 1;
          if(Number(param1)==Number(param2)) return 0;
          if(Number(param1)<Number(param2)) return -1;
      }
  }
基于Spring Boot搭建的一个多功能在线学习系统的实现细节。系统分为管理员和用户两个主要模块。管理员负责视频、文件和文章资料的管理以及系统运营维护;用户则可以进行视频播放、资料下载、参与学习论坛并享受个性化学习服务。文中重点探讨了文件下载的安全性和性能优化(如使用Resource对象避免内存溢出),积分排行榜的高效实现(采用Redis Sorted Set结构),敏感词过滤机制(利用DFA算法构建内存过滤树)以及视频播放的浏览器兼容性解决方案(通过FFmpeg调整MOOV原子位置)。此外,还提到了权限管理方面自定义动态加载器的应用,提高了系统的灵活性和易用性。 适合人群:对Spring Boot有一定了解,希望深入理解其实际应用的技术人员,尤其是从事在线教育平台开发的相关从业者。 使用场景及目标:适用于需要快速搭建稳定高效的在线学习平台的企业或团队。目标在于提供一套完整的解决方案,涵盖从资源管理到用户体验优化等多个方面,帮助开发者更好地理解和掌握Spring Boot框架的实际运用技巧。 其他说明:文中不仅提供了具体的代码示例和技术思路,还分享了许多实践经验教训,对于提高项目质量有着重要的指导意义。同时强调了安全性、性能优化等方面的重要性,确保系统能够应对大规模用户的并发访问需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值