zoukankan      html  css  js  c++  java
  • 原生js实现table的排序

    原生js实现table的排序

    今天遇到了一个问题就是使用原生js对table标签进行排序
    一开始的时候陷入了一个误区就是首先获取table,然后每次比较完大小都会交换children的值,准备到最后吧children的值赋给table
    但是问题出现了,就是每次操作children的值都没有效果。
    最后发现自己走入了一个误区就是想要操作html标签只能通过修改innerHtml来进行操作,操作完innerhtml后children会自动改变

    直接上代码吧

    HTML代码

        <table>
            <thead>
                <tr><th>id</th><th>price</th><th>sales</th></tr>
            </thead>
            <tbody id="jsList">
                <tr><td>1</td><td>10.0</td><td>800</td></tr>
                <tr><td>2</td><td>30.0</td><td>600</td></tr>
                <tr><td>3</td><td>20.5</td><td>700</td></tr>
                <tr><td>4</td><td>40.5</td><td>500</td></tr>
                <tr><td>5</td><td>60.5</td><td>300</td></tr>
                <tr><td>6</td><td>50.0</td><td>400</td></tr>
                <tr><td>7</td><td>70.0</td><td>200</td></tr>
                <tr><td>8</td><td>80.5</td><td>100</td></tr>
            </tbody>
        </table>
    

    代码

    
    function sort(type, order) {
        var table = document.getElementById("jsList");
        var trArr = table.children;
        var intType;
        if (type == "id") {
            intType = 0;
        }
        else if (type == "price") {
            intType = 1;
        }
        else if (type == "sales") {
            intType = 2;
        }
    var temp
        if (order == "asc") {
            for (var i = 0; i < trArr.length-1; i++) {
                for(j=0;j<trArr.length-i-1;j++){
                    if((trArr[j].children[intType].innerHTML-0)>(trArr[j+1].children[intType].innerHTML-0)){
                        temp=trArr[j].innerHTML;
                        trArr[j].innerHTML=trArr[j+1].innerHTML;
                        trArr[j+1].innerHTML=temp;
    
                    }
    
                }
    
            }
        } else {
            for (var i = 0; i < trArr.length-1; i++) {
                for(j=0;j<trArr.length-i-1;j++){
                    if((trArr[j].children[intType].innerHTML-0)<(trArr[j+1].children[intType].innerHTML-0)){
                        temp=trArr[j].innerHTML;
                        trArr[j].innerHTML=trArr[j+1].innerHTML;
                        trArr[j+1].innerHTML=temp;
    
                    }
    
                }
    
            }
        }
    
    }
    
  • 相关阅读:
    Linq技术四:动态Linq技术 -- Linq.Expressions
    74HC595的中文资料
    MessageDigest简单介绍
    gpu显存(全局内存)在使用时数据对齐的问题
    走进windows编程的世界-----windows进程
    Matlab画图-非常具体,非常全面
    php实现 合并表记录(需求是最好的老师)
    php实现求一个数的质数因子
    php课程 4-16 数组自定义函数(php数组->桶)
    jquery-3 jquery选择器
  • 原文地址:https://www.cnblogs.com/zj-kingder/p/8878214.html
Copyright © 2011-2022 走看看