IFE-TASK38(任务三十八:UI组件之排序表格)

前言:

百度前端技术学院,任务三十八:UI组件之排序表格

知识点:

1)某列元素大小排序 --> 对行重新排序

function(eve){
					var content = eve.target.parentNode.innerHTML.split('<')[0],
					      listNum = config.thContent.indexOf(content),
					      sortList = [],
					      newList = [],
					      trList = tab.childNodes;
					//取出要排序的数据,保存在数组中
					for( var i = 0;i<config.rowNum-1;i++){
						sortList.push(trList[i+1].childNodes[listNum].innerHTML);
					}
					//得到所要求经排序后的数组
					//降序排序
					newList = sortList.sort(sortNumber);
					//需要升序则取反
					if(!flag){
						newList = newList.reverse();
					}
					//获得当前列的数据分布情况
					sortList = [];
					for( i = 0;i<config.rowNum-1;i++){
						sortList.push(trList[i+1].childNodes[listNum].innerHTML);
					}
					//根据前后两个数组,重新排序列表项
					changeOrder(newList,sortList);
					function sortNumber(a,b){
						return b - a ;
					}
					//根据排序结果重新排列行序
					function changeOrder(newList,oldList){
						var len = newList.length,
						      pos_before,
						      pos_now,
						      trList = tab.childNodes,
						      tempNode = document.createElement('tr'),
						      temp;
						for(var k = 0;k<len;k++){
							//记录当前值在新表中位置,并寻找当前值在原表中的位置
							pos_now = k;
							pos_before = oldList.indexOf(newList[k]);
							//如果当前值在两个表中的位置不一样,则交换两个节点的内容
							if(pos_now !== pos_before){
								tempNode.innerHTML = trList[pos_before+1].innerHTML;
								trList[pos_before+1].innerHTML = trList[pos_now+1].innerHTML;
								trList[pos_now+1].innerHTML = tempNode.innerHTML;
								//更新表的内容
								temp = oldList[pos_before];
								oldList[pos_before] = oldList[pos_now];
								oldList[pos_now] = temp;
							}
						}
					}
				}

代码地址:点击打开链接

DEMO:点击打开链接

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值