JS实现前台表格排序功能
JS实现前台表格排序功能
虽然数据量不大的情况下,前台排序速度比较快,但一般情况下,我们的项目只使用后台排序,原因有二:
一是代码简单;二是前台JS排序对于有分页的情况无法处理。
前段时间,有个功能需要用到前台排序,没办法,写一个吧,下面记录一下实现的过程,其实很简单,如下:
var _sortType; //记录排序方向
var _sortColumnIndex;//记录排序列位置
var _sortMaxRow;//记录需要排序的行数
/*
*排序初始化
*/
function initSort(obj){
/*
*计算需要排序的行数[此处取的是‘第一列不为空的行数’]
*判断‘是否为空’时空格也要过滤掉
*/
if(_sortMaxRow == null || _sortMaxRow == ''){
var table1 = obj.parentNode.parentNode;
var rows = table1.rows;
for(var i = 1;i < rows.length;i++){
var tv = rows[i].cells[0].innerText;
if(tv != null && tv.replace(/(^\s*)(\s*$)/g,'') != ''){
_sortMaxRow = i;
}
}
}
/*
*计算第几列需要排序
*/
var sortColumnIndex = obj.cellIndex;
/*
*设置排序方向:
*1、如果要排序列与上一次排序列位置相同,则将排序方向反转
*2、如果要排序列与上一次排序列位置不相同,则排序方向不变,并设置需要排序的列位置
*/
if(sortColumnIndex != _sortColumnIndex){
_sortColumnIndex = sortColumnIndex;
if(_sortType == null || _sortType == ''){
_sortType = 'asc';
}
}
else{
if(_sortType == '' || _sortType == 'desc'){
_sortType = 'asc';
}
else{
_sortType = 'desc';
}
}
}
/*
*执行排序
*/
function execSort(obj){
if(_sortColumnIndex == ''){
sortField = 1;
}
if(_sortType == ''){
sortType = 'asc';
}
/*
*以下为排序部分
*1、排序采用的是‘下沉法排序’[即,冒泡法的的逆方向]
*2、由于涉及到隔行换色的问题,所以互换时只是把两行的内容互换,并没有将两个行对象互换
*/
var table1 = obj.parentNode.parentNode; //通过TD获得TABLE
for(var i = _sortMaxRow - 1;i >= 1;i--){
for(j = 1;j <= i;j++){
var t_first = table1.rows[j].cells[_sortColumnIndex].innerText;
var t_second = table1.rows[j+1].cells[_sortColumnIndex].innerText;
if((_sortType=='asc' && t_first > t_second) || (_sortType=='desc' && t_first < t_second)){
swapRow(table1.rows[j],table1.rows[j+1]);
}
}
}
}
function swapRow(row1,row2){
for(var k = 0;k < row1.cells.length;k++){
var tv = row1.cells[k].innerText;
row1.cells[k].innerText = row2.cells[k].innerText;
row2.cells[k].innerText = tv;
}
}
调用时,在表头TD上加 onclick="javascript:initSort(this);execSort(this);"
JS实现前台表格排序功能的更多相关文章
- js简单实现表格排序
昨天看到一篇关于表格排序的随笔,鉴于本人还只会简单的js,不会使用封装,所以自己也试了一下写这个效果.可能不太优化,原理思路是:获取行对象tr,排序tr中要比较的对象td,排序后添加回tbody.如下 ...
- JS实现表格排序
今天有点闲,写个小东西,使用JS实现点击表格标题栏实现自动排序功能,嘻嘻... 一.JS代码,文件名为code.js如下: (function($){ //插件 $.extend($,{ //命名空间 ...
- JS对表格排序(支持对序号,数字,字母,日期)
JS对表格排序(支持对序号,数字,字母,日期) 前不久看到淘宝组件有"对表格排序的插件" 如想要看 可以看这个地址 http://gallery.kissyui.com/KSort ...
- 案例学习总结:原生JS实现表格排序
最近在学习js的表格排序,没想到看不起眼的表格排序实际上却暗含了众多JS知识点.在这里记录一下此次学习过程.希望对大家也有所帮助. 完整的表格排序涉及了下列这些知识点: call方法使用 sort方法 ...
- js 实现table表格拖拽和点击表头升降序排序
js 实现table表格拖拽和点击表头升降序排序,写的比较乱,用的时候可以把其中的一些模块函数提取出来 样式,由于是可拖拽表格,所以样式 table tr th{cursor:move;} js实现 ...
- [转载]EasyUI中数据表格DataGrid添加排序功能
我们这里演示的是EasyUI数据表格DataGrid从服务器端排序功能,因为觉的本地数据排序没有多大的作用,一般我们DataGrid不会读取全部数据,只会读取当前页的数据,所以本地数据排序也只是对当前 ...
- JQuery Easyui/TopJUI 用JS创建数据表格并实现增删改查功能
JQuery Easyui/TopJUI 用JS创建数据表格并实现增删改查功能 html <table id="productDg"></table> &l ...
- 前端 vue/react 或者 js 导入/导出 xlsx/xls (带样式)表格的功能
第一种导出表格的功能: yarn add xlsx script-loader file-saver xlsx-style 效果展示 xlsx-style的bug修复:node_module/xlsx ...
- JS表格排序
var employees = [] employees[0] = { name: "George", age: 32, retiredate: "March 12, 2 ...
随机推荐
- JDBC_12_JDBC事务
JDBC事务 JDBC中事务默认自动提交,每执行一次SQL就会自动提交一次. 这样的话可能出现数据安全性问题. connection.setAutoCommit(false) false代表关闭自动提 ...
- C语言-内存函数的实现(二)之memmove
C语言中的内存函数有如下这些 memcpy memmove memcmp memset 下面看看memmove函数 memmove 为什么会需要memmove函数? int main() { int ...
- IDEA中集成Git
一.新建项目,绑定GIT 1.新建spring boot项目 2.路径选择git本地文件地址 3.新的项目文件绑定git,将远程的git文件拷贝至项目中 二.修改文件,使用IDEA操作GIT 1.提 ...
- 2.1.4- css 样式规则
CSS初识 CSS(Cascading Style Sheets) CSS通常称为CSS样式表或层叠样式表(级联样式表),主要用于设置HTML页面中的文本内容(字体.大小.对齐方式等).图片的外形(宽 ...
- 08- Tomcat入门与环境搭建部署
环境搭建:网站文件(开发人员提供),相关软件(web服务器,应用服务器,数据库软件),硬件(服务器设备上),网络环境. 开发人员提供:部署文档说明书(操作系统版本,硬件配置,服务器软件及相关版本,部署 ...
- 【feign】拦截输出日志
方法一: 使用Feign拦截器 /** * @author: Sam.yang * @date: 2020/11/12 16:55 * @desc: feign请求拦截 */ @Slf4j @Comp ...
- poj3648 2-sat
题意: 一对夫妻结婚,请来了n对夫妻,所有人坐在同一张桌子上吃饭,这张桌子是长方形的可以坐两排人,有如下限制 (1) 新娘和新郎不做同一侧. (2) 每对来的夫妻也不能坐在同一侧. (3 ...
- Day003 注释、标识符和关键字
注释.标志符.关键字 注释 当项目逐渐复杂,注释就很重要了. 注释不会被执行,是给我们写代码的人看的. 书写注释是一个非常好的习惯. Java中的注释有三种: 当行注释 // 多行注释 /* 注释 * ...
- Hbase问题小结(一)
1. Hbase读写优化 写: 批量写.异步批量提交.多线程并发写.使用BulkLoad写入.表优化(压缩算法.预分区.合理的rowkey设计.合理关闭WAL或异步WAL) SKIP_WAL:只写缓存 ...
- 2021ArchSummit全球架构师峰会上,大家在聊些什么
大会PPT公开下载链接:https://ppt.infoq.cn/list/assh2021 大会主要情况介绍 2021 ArchSummit全球架构师峰会是该大会正式成立的第十年,是极客邦科技旗下I ...