//排序 function sortAble(tableId, iCol, dataType) { iCol = iCol - 1; debugger; //排序上下建样式 var spanId = $("#"+tableId).find("th").eq(iCol).children('span.sortable'); $("#"+tableId).find("th").eq(iCol).siblings().children("span.sortable").removeClass("desc asc"); if(spanId.hasClass("desc")){ spanId.removeClass("desc").addClass("asc"); }else if(spanId.hasClass("asc")){ spanId.removeClass("asc").addClass("desc"); }else{ spanId.addClass("desc"); } //var table = $(tableId).parents("table"); var table = document.getElementById(tableId); var tbody = table.tBodies[0]; var colRows = tbody.rows; var aTrs = new Array; //将将得到的列放入数组,备用 for (var i=0; i < colRows.length; i++) { aTrs[i] = colRows[i]; } //判断上一次排列的列和现在需要排列的是否同一个。 if (table.sortCol == iCol) { aTrs.reverse(); } else { //如果不是同一列,使用数组的sort方法,传进排序函数 aTrs.sort(compareEle(iCol, dataType)); } var oFragment = document.createDocumentFragment(); for (var i=0; i < aTrs.length; i++) { oFragment.appendChild(aTrs[i]); } tbody.appendChild(oFragment); //记录最后一次排序的列索引 table.sortCol = iCol; } //将列的类型转化成相应的可以排列的数据类型 function convert(sValue, dataType) { switch(dataType) { case "int": if(sValue=="--")sValue = 0; return parseInt(sValue); case "float": if(sValue=="--")sValue = 0; return parseFloat(sValue); case "date": return new Date(Date.parse(sValue)); case "str": return sValue.toString().length; default: return sValue.toString(); } } //排序函数,iCol表示列索引,dataType表示该列的数据类型 function compareEle(iCol, dataType) { return function (oTR1, oTR2) { var vValue1 = convert(ieOrFireFox(oTR1.cells[iCol]), dataType); var vValue2 = convert(ieOrFireFox(oTR2.cells[iCol]), dataType); if (vValue1 > vValue2) { return -1; } else if (vValue1 < vValue2) { return 1; } else { return 0; } }; } function ieOrFireFox(ob) { if (ob.textContent != null) return ob.textContent; var s = ob.innerText; return s.substring(0, s.length); } //列表格式化 function dataFormat(tableClass,i){ if($("."+tableClass).length>0){ $("."+tableClass+" tr").each(function(){ var text = $(this).find("td").eq(i).text().replace(/%/g, "").replace(/,/g,''); if(text!="--"){ if(text < 0){ $(this).find("td").eq(i).addClass("color_green"); }else{ $(this).find("td").eq(i).addClass("color_red"); } } }) } } //数字格式化 function formatNumber(num, precision, separator) { var parts; // 判断是否为数字 if (!isNaN(parseFloat(num)) && isFinite(num)) { // 把类似 .5, 5. 之类的数据转化成0.5, 5, 为数据精度处理做准, 至于为什么 // 不在判断中直接写 if (!isNaN(num = parseFloat(num)) && isFinite(num)) // 是因为parseFloat有一个奇怪的精度问题, 比如 parseFloat(12312312.1234567119) // 的值变成了 12312312.123456713 num = Number(num); // 处理小数点位数 num = (typeof precision !== 'undefined' ? num.toFixed(precision) : num).toString(); // 分离数字的小数部分和整数部分 parts = num.split('.'); // 整数部分加[separator]分隔, 借用一个著名的正则表达式 parts[0] = parts[0].toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1' + (separator || ',')); return parts.join('.'); } return NaN; }