`
QuarterLifeForJava
  • 浏览: 177823 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

简单解决表格重排序后行颜色丢失问题

阅读更多
问题描述:后台拿到JSON数据后,调用共通组件输出数据,并对不同情况拼接输出形式,部分代码如下:
				for(var i=0;i<first;i++){
					var id = $('#overtimeImplementListTable').find('tbody').eq(1).find('tr').eq(i).find('td').eq(16).find('div').html();
					$('#overtimeImplementListTable').find('tbody').eq(1).find('tr').eq(i).find('td').eq(15).html("<div unselectable='on' class='j-grid-cell-inner' style='text-align:center;' title=''>未审批</div>");
					$('#overtimeImplementListTable').find('tbody').eq(1).find('tr').eq(i).find('td').attr('style','background: gold');
					//obj[id] = 'gold';
				}
				for(var i=0;i<second;i++){
					var id = $('#overtimeImplementListTable').find('tbody').eq(1).find('tr').eq(first+i).find('td').eq(16).find('div').html();
					$('#overtimeImplementListTable').find('tbody').eq(1).find('tr').eq(first+i).find('td').eq(15).html("<div unselectable='on' class='j-grid-cell-inner' style='text-align:center;' title=''><a href='../html/overtimeStatus.html?id="+id+"&status=0'>修改</a>/<a href='#'>取消</a></div>");
					$('#overtimeImplementListTable').find('tbody').eq(1).find('tr').eq(first+i).find('td').attr('style','background: pink');
					//obj[id] = 'pink0';
				}
				for(var i=0;i<third;i++){
					var id = $('#overtimeImplementListTable').find('tbody').eq(1).find('tr').eq(first+second+i).find('td').eq(16).find('div').html();
					$('#overtimeImplementListTable').find('tbody').eq(1).find('tr').eq(first+second+i).find('td').eq(15).html("<div unselectable='on' class='j-grid-cell-inner' style='text-align:center;' title=''><a href='../html/overtimeStatus.html?id="+id+"&status=1'>修改</a>/<a href='#'>取消</a></div>");
					$('#overtimeImplementListTable').find('tbody').eq(1).find('tr').eq(first+second+i).find('td').attr('style','background: pink');
					//obj[id] = 'pink1';
				}
				for(var i=0;i<forth;i++){
					var id = $('#overtimeImplementListTable').find('tbody').eq(1).find('tr').eq(first+second+third+i).find('td').eq(16).find('div').html();
					$('#overtimeImplementListTable').find('tbody').eq(1).find('tr').eq(first+second+third+i).find('td').eq(15).html("<div unselectable='on' class='j-grid-cell-inner' style='text-align:center;' title=''>实施已确认</div>");
					$('#overtimeImplementListTable').find('tbody').eq(1).find('tr').eq(first+second+third+i).find('td').attr('style','background: lawngreen');
					//obj[id] = 'lawngreen';
				}

式样如下:

其中我在'当前状态'列后面还隐藏了一列,是ID,ID唯一!!!
问题是:当我点击'开始时间'、'当前状态'等头部排序后,不光颜色消退,‘当前状态’拼接的‘未审批’、‘修改/取消’也会一并消失,而且不能改共通组件(PS:我也不会改,两三千行,我又不怎么懂JS。。。),那么只能记录ID然后分别判断着色、拼接,具体怎么做,请看下面:
注:上面的所有操作都在点击事件触发前就完成了,即来自body的onload的init方法
1、定义一个对象
var obj = {};//应定义为全局变量
将ID作为key值,颜色作为value值,就是我上面注释掉的写法
2、触发click事件后首先将重排好后的ID放入数组中去
var context;
context = new Array();
		for(var i=0;i<total;i++){
			var id = $('#overtimeImplementListTable').find('tbody').eq(1).find('tr').eq(i).find('td').eq(16).find('div').html();
			context.push(id);
		}

3、遍历重排后的ID数组,进行比较匹配和重新着色等一些列操作
①遍历重排后的ID数组
for(var j=0;j<context.length;j++){  }

②得到排序好后的ID在数组中的位置
var posion = $.inArray(context[j],context);

③将数组中的ID作为obj对象的key值找到对应的value值
if(obj[context[j]]=='gold'){
				$('#overtimeImplementListTable').find('tbody').eq(1).find('tr').eq(posion).find('td').eq(15).html("<div unselectable='on' class='j-grid-cell-inner' style='text-align:center;' title=''>未审批</div>");
				$('#overtimeImplementListTable').find('tbody').eq(1).find('tr').eq(posion).find('td').attr('style','background: gold');
			}else if(obj[context[j]]=='lawngreen'){
				$('#overtimeImplementListTable').find('tbody').eq(1).find('tr').eq(posion).find('td').eq(15).html("<div unselectable='on' class='j-grid-cell-inner' style='text-align:center;' title=''>实施已确认</div>");
				$('#overtimeImplementListTable').find('tbody').eq(1).find('tr').eq(posion).find('td').attr('style','background: lawngreen');
			}else if(obj[context[j]]=='pink0'){
				$('#overtimeImplementListTable').find('tbody').eq(1).find('tr').eq(posion).find('td').eq(15).html("<div unselectable='on' class='j-grid-cell-inner' style='text-align:center;' title=''><a href='../html/overtimeStatus.html?id="+context[j]+"&status=0'>修改</a>/<a href='#'>取消</a></div>");
				$('#overtimeImplementListTable').find('tbody').eq(1).find('tr').eq(posion).find('td').attr('style','background: pink');
			}else if(obj[context[j]]=='pink1'){
				$('#overtimeImplementListTable').find('tbody').eq(1).find('tr').eq(posion).find('td').eq(15).html("<div unselectable='on' class='j-grid-cell-inner' style='text-align:center;' title=''><a href='../html/overtimeStatus.html?id="+context[j]+"&status=1'>修改</a>/<a href='#'>取消</a></div>");
				$('#overtimeImplementListTable').find('tbody').eq(1).find('tr').eq(posion).find('td').attr('style','background: pink');
			};

4、最后在3-1的for循环结束后清空数组
		//清空数组
		//obj = {};//对象不需要清空!
		context.length = 0;

最后,其原理其实很简单,如下:
var x = {};
x[1] = '黑';
x[3] = '白';
x[2] = '黑';
//var x = {1:'黑',3:'白',2:'黑'};
var newX;
newX.push(3);
newX.push(1);
newX.push(2);
//newX = [3,1,2];
for(var i=0;i<newX.length;i++){
$.inArray(newX[i],newX)//找到指定值在数组中的位置
	alert(newX[i]+"="+x[newX[i]]);//3=白;1=黑;2=白
}

所采用的方法很简单初级,必定有更好的解决办法,小弟经验不足、知识狭隘,如果有好的建议或不同建议,定当虚心请教,认真学习
  • 大小: 19.4 KB
分享到:
评论

相关推荐

    我的表格

    4. **数据排序与过滤**:可以按照一列或多列数据的值对整个表格进行升序或降序排序,同时提供过滤功能,只显示满足特定条件的数据行。 5. **图表**:电子表格软件能将数据转化为直观的图表,如柱状图、折线图、饼图...

    word版电子表格

    9. **导入和导出**:Word文档中的表格可以导出为CSV或PDF格式,也可以导入Excel文件,但导入后可能会丢失一些Excel特有的格式和功能。 10. **文件分享与存储**:文件名列表中的“表格1.doc”和“表格2.doc”表明是...

    第4期-WPS专刊-WPS表格应用技巧集锦

    WPS提供了一些实用的工具来帮助用户解决这些问题。 **操作步骤:** 1. **浏览**:可以使用“冻结窗格”功能锁定表格的某些部分,以便在滚动表格时保持这些部分可见。 2. **打印**:在“页面布局”选项卡中,可以...

    Excel表格常用实用技巧大全.doc

    Excel表格是Microsoft Office套件中的重要组件,广泛用于数据分析、报表制作和管理各种信息。以下是一些关于Excel表格的常用...记得不断探索和实践,你会发现Excel是一个功能强大的工具,能解决许多复杂的数据问题。

    DELPHI 表格控件DBGridEh使用详解 .pdf

    编辑功能涵盖多行选择、文本多行显示、备注字段显示、金额的千分号显示、不滚动提交数据、数据批量插入数据库、行可选中也可编辑、焦点丢失时输入法问题修正、滚动表格代码、页脚合计和统计行定制、TDBSumList说明...

    jQuery UI拖拽信息到Table表格特效

    - 为了防止数据丢失,可以在拖放后对表格数据进行持久化存储,如使用cookies或localStorage。 综上所述,"jQuery UI拖拽到Table表格特效"是一个利用jQuery UI库实现的增强用户交互的实用功能。通过结合`draggable`...

    参考资料-表格.zip

    在实际应用中,这样的文档可能包含了研究数据、项目进度、财务报告、客户信息等多种类型的数据,是决策制定、问题解决和信息共享的基础。 标签“资料”提示我们这是一份学习或工作资料,可能用于教学、培训或者个人...

    Word2021中怎么添加表格.docx

    在Word2021中添加表格是一个非常实用的功能,它可以帮助我们组织信息、对比数据以及创建报告。以下是如何在Word2021中插入表格的详细步骤和相关知识点: 1. **启动Word2021**: 首先,确保已经安装了Microsoft ...

    百度编辑器UEditor JSP版 v1.3.5.rar

    修复表格新增行后宽度丢失问题 修复表格底纹和表格排序多语言配置遗漏 解决右键,粘贴,对话框内容报错 修复设置单元格颜色问题 优化大字号下的显示问题 解决IE下表格粘贴失效问题 修复选中内容设置成代码,出现多余...

    创建表格

    在实际工作中,结合Teracopy这样的工具,用户可以更快速地备份或迁移含有大量数据的表格文件,减少因复制过程中出现的错误或中断而导致的数据丢失。同时,对于开发者来说,他们可能通过编写自定义脚本或利用API接口...

    参考资料-11、巧妙解决合并单元格问题.zip

    本参考资料“巧妙解决合并单元格问题.zip”包含了一个名为“参考资料-11、巧妙解决合并单元格问题.xlsx”的文件,该文件很可能提供了多种策略和技巧来应对这些挑战。 1. **理解合并单元格的影响**:合并单元格会...

    cad表格转excel.doc

    最后,调整表格的样式,如字体、颜色等,以使最终结果更加整洁美观。至此,CAD表格成功转换为Excel表格,可以方便地进行进一步的计算、统计或分析。 在进行此操作时,理解X和Y坐标的含义至关重要,因为它们在Excel...

    表格控件DBGridEh

    - **修正DBGrideh丢失焦点时自动关闭输入法的问题**:可以通过设置`DBGridEh.Options`属性中的`dgAutoTab`选项来解决。 - **DBGRIDEH选定多行删除怎么实现**:可以通过`DBGridEh.SelectedRows`属性来获取选中的行,...

    参考资料-表格使用说明及注意事项.zip

    3. 排序与筛选:根据需要,可以对表格数据进行升序或降序排序,也可以设置筛选条件,隐藏不满足条件的行。 二、公式与函数应用 1. 公式计算:Excel等软件支持公式计算,例如SUM、AVERAGE、MAX、MIN等,用于求和、...

    《Word-2010文档处理案例教程》表格.docx

    - **数据排序与计算**:Word-2010支持表格中的数据排序,并可通过公式进行简单的数据计算。 ### 表格实例分析——二(1)班成绩表 #### 四、成绩表设计 - **标题**:位于表格上方,用于简要描述表格内容。 - **列...

    cad与excel表格互换

    这样,用户可以在Excel环境中对数据进行排序、过滤、计算等操作,方便项目管理和报告生成。 其次,bobExcel2Cad.dll则是将Excel数据转换回CAD格式的功能模块。它允许用户在Excel中编辑数据后,将这些更改同步回CAD...

    一键将word中的表格提取到excel文件中.rar

    首先,Word中的表格虽然方便编写和编辑,但Excel因其强大的计算、排序和数据分析功能而更适合处理大量数据。当你发现Word中的表格数据量大或者需要进行复杂的计算时,将表格转至Excel就显得尤为必要。 1. **手动...

    GridView选定行变色

    4. **注意PostBack问题**:由于ASP.NET的页面生命周期,如果页面需要进行PostBack(如分页或排序),先前的选中状态可能会丢失。为了解决这个问题,我们可以在Page_Load事件中保存和恢复选中状态: ```csharp ...

    处理金额js;表格样式js

    JavaScript可以通过操作DOM(文档对象模型)来改变表格的样式,如修改单元格的颜色、添加删除行、排序数据等。例如,我们可以使用`document.getElementById()`或`document.querySelector()`来选择特定的表格元素,...

    Numbers教程

    - **给表格中的行排序**:按照指定标准排序行。 - **过滤表格中的行**:只显示满足条件的数据。 - **创建表格类别**:定义分类标准。 - **定义表格类别和子类别**:细化分类结构。 - **删除表格类别和子类别**...

Global site tag (gtag.js) - Google Analytics