JavaScript中怎么实现表格排序
创始人
2024-12-17 17:43:06
0次

Table sorter包括JavaScript和一点CSS,能够让原始的html table变得可以分别按照各栏数据值,对各行排序。

效果
  1. 在表头任意一个栏目中点击一下,下面各行将按照此栏目值的升序排序
    按照字符串比较来确定顺序

  2. 再次点击该栏目,变更为降序排序

  3. 点击其它栏目,则按其它栏目的值重新排序

  4. 注意,排序时,栏目奇偶行的背景色保持奇数白色、偶数浅灰色

要求
  1. 不能改动原html,只能够添加js和css文件

  2. 不能使用任何类库,只能用原生DOM API

  3. JavaScript必须模块化,JS的调用入口,必须按照下面的图示:
    JavaScript中怎么实现表格排序

JavaScript中怎么实现表格排序
JavaScript中怎么实现表格排序

sorter.js:
"use strict";

window.onload = function () {var tables = getAllTables();
    makeAllTablesSortalbe(tables);
};//嵌入的话用下面两行..// var tables = getAllTables();// makeAllTablesSortalbe(tables);function getAllTables() {return document.getElementsByTagName("table");
}function makeAllTablesSortalbe(tables) {for (var i = 0; i < tables.length; i++)
        makeSort(tables[i]);
}//让列表变得可排序function makeSort(table) {var th = table.getElementsByTagName("th");for (var i = 0; i < th.length; i++) {//绑定按钮事件th[i].onclick = function () {var index = 0;
            changeStyle(th, this);//找出索引值for (var j = 0; j < th.length; j++) {if (this == th[j])
                    index = j;
            }
            sortByTh(table, index, this.className);
        };
    }
}//改变样式function changeStyle(th, t) {for (var i = 0; i < th.length; i++) {if (th[i] == t) {if (th[i].className.indexOf("descend") != -1 )
                th[i].className = th[i].className.replace("descend", "ascend");else if (th[i].className.indexOf("ascend") != -1 )
                th[i].className = th[i].className.replace("ascend", "descend");elseth[i].className += " descend";

        } else {
            th[i].className = th[i].className.replace("descend", "");
            th[i].className = th[i].className.replace("ascend", "");
        }
    }
}//排序function sortByTh(table, index, className) {var action = className.indexOf("descend") != -1 ? "descend" : "ascend";var array = [];for (var i = 1; i < table.getElementsByTagName("tr").length; i++) {
        array[i-1] = table.getElementsByTagName("tr")[i];
    }
    array.sort(function (a, b) {//升序if (action == 'descend') {return a.cells[index].innerHTML <= b.cells[index].innerHTML;
        } else {//降序return a.cells[index].innerHTML >= b.cells[index].innerHTML;
        }
    });for (var i = 0; i < array.length; i++)
        table.getElementsByTagName("tbody")[0].appendChild(array[i]);
}

CSS:

    border: 1px solid gray;margin: 0;padding: 3px;border-collapse: collapse;
}tr:nth-child(even),tr:hover {background-color: #DEDEDE;}th {text-align: left;background-color: #041A7F;color: white;font-weight:  bold;padding-right:16px;}.ascend, .descend {background-color: #A4B0FC;background-position: right;background-repeat: no-repeat;}.ascend {background-image: url("ascend.png");}.descend {background-image: url("descend.png");}
index.html
Sortable table

Sortable table

To-Do

What?When?LocationParis Web 20072007-11-15IBM La Defense / INSIAParis On Rails 20072007-12-10Cite des SciencesBurger Quiz party2007-04-14Volta

Staff

First nameLast nameLatest checkinRichardPiacentini2007-03-27EricDaspet2007-03-28AuroreJaballah2007-03-15
sorter.css
table, tr *{border: 1px solid gray;margin: 0;padding: 3px;border-collapse: collapse;}tr:nth-child(even),tr:hover {background-color: #DEDEDE;}th {text-align: left;background-color: #041A7F;color: white;font-weight:  bold;padding-right:16px;}.ascend, .descend {background-color: #A4B0FC;background-position: right;background-repeat: no-repeat;}.ascend {background-image: url("ascend.png");}.descend {background-image: url("descend.png");}

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...