Files

265 lines
6.8 KiB
JavaScript

$(document).ready(function(e) {
//表格自动获取宽度。
//要注意的是,在定义表头宽度时,要确保此列最宽的内容的宽度要小于本TH之宽度。
//表格自动获取该表格的表头所有TH的宽度之和,注意表头的TH的宽度,要用th width="x"这种形式,不要用style="width:100px"这种。
$(".tytable2").each(function(index, element) {
thisthsum=$(this).find("th").length;
var thistbwidth=0;
for(i=0;i<thisthsum;i++){
thistbwidth+=parseInt($(this).find("th").eq(i).attr("width"));
}
$(this).attr("width",thistbwidth+thisthsum+1);
});
//表格自动获取对应表头的宽度。注意表头的TH的宽度,要用th width="x"这种形式,不要用style="width:100px"这种。
$(".tytable2").find("td").each(function(index, element) {
$(this).attr("width",parseInt($(this).parents("table").find("th").eq($(this).index()).attr("width")));
});
tytable2auto();
//表格单隔行变色效果 本项目中暂去掉
/* $(".tytable2 tbody").find("tr:even").addClass("trbgfff");
$(".tytable2 tbody").find("tr:odd").addClass("trbgf8");*/
});
$(window).resize(function(e) {
tytable2auto();
});
function tytable2auto(){
$(".tytable2").each(function(index, element) {
if($(this).width()<$(this).parents(".tytable2BOX").width()){
$(this).width($(this).parents(".tytable2BOX").width()-2);
}
});
}
//表头固定 我重写一个
function scrollo(viewid,scrollid,size){
var scrollo = document.getElementById(scrollid);
var tb1 = document.getElementById(viewid);
tb1id=$("#"+viewid).attr("id");
var tb2html='<table border="0" cellspacing="0" cellpadding="0" class="tytable2" id="'+tb1id+'_2" width="'+$("#"+viewid).width()+'" style="position:absolute;top:0;left:0;">';
tb2html+=$("#"+viewid).html();
tb2html+='</table>'
var tb2 = tb2html;
$("#"+scrollid).append(tb2)
$("#"+viewid+"_2").find("tbody").css("display","none");
$("#"+viewid+"_2").find("tbody").attr("id",$("#"+viewid).find("tbody").attr("id")+"_2")
scrollo.onscroll = function(){
$("#"+viewid+"_2").css("top",this.scrollTop+"px");
}/* */
}
//表头固定 结束
//表格排序
function sortTable(id, col, rev){
var tblEl = document.getElementById(id);
if(tblEl.reverseSort == null){
tblEl.reverseSort = new Array();
tblEl.lastColumn = 1;
}
if(tblEl.reverseSort[col] == null)
tblEl.reverseSort[col] = rev;
if(col == tblEl.lastColumn)
tblEl.reverseSort[col] = !tblEl.reverseSort[col];
tblEl.lastColumn = col;
var oldDsply = tblEl.style.display;
tblEl.style.display = "none";
var tmpEl;
var i, j;
var minVal, minIdx;
var testVal;
var cmp;
for(i = 0; i < tblEl.rows.length - 1; i++){
minIdx = i;
minVal = getTextValue(tblEl.rows[i].cells[col]);
for(j = i + 1; j < tblEl.rows.length; j++){
testVal = getTextValue(tblEl.rows[j].cells[col]);
cmp = compareValues(minVal, testVal);
if(tblEl.reverseSort[col])
cmp = -cmp;
if (cmp == 0 && col != 1)
cmp = compareValues(
getTextValue(tblEl.rows[minIdx].cells[1]),
getTextValue(tblEl.rows[j].cells[1])
);
if(cmp > 0){
minIdx = j;
minVal = testVal;
}
}
if(minIdx > i){
tmpEl = tblEl.removeChild(tblEl.rows[minIdx]);
tblEl.insertBefore(tmpEl, tblEl.rows[i]);
}
}
makePretty(tblEl, col);
setRanks(tblEl, col, rev);
tblEl.style.display = oldDsply;
return false;
}
if(document.ELEMENT_NODE == null){
document.ELEMENT_NODE = 1;
document.TEXT_NODE = 3;
}
function getTextValue(el){
var i;
var s;
s = "";
for(i = 0; i < el.childNodes.length; i++)
if(el.childNodes[i].nodeType == document.TEXT_NODE)
s += el.childNodes[i].nodeValue;
else if (el.childNodes[i].nodeType == document.ELEMENT_NODE && el.childNodes[i].tagName == "BR")
s += " ";
else s += getTextValue(el.childNodes[i]);
return normalizeString(s);
}
function compareValues(v1, v2){
var f1, f2;
f1 = parseFloat(v1);
f2 = parseFloat(v2);
if(!isNaN(f1) && !isNaN(f2)){
v1 = f1;
v2 = f2;
}
if(v1 == v2)
return 0;
if(v1 > v2)
return 1
return -1;
}
var whtSpEnds = new RegExp("^\\s*|\\s*$", "g");
var whtSpMult = new RegExp("\\s\\s+", "g");
function normalizeString(s){
s = s.replace(whtSpMult, " ");
s = s.replace(whtSpEnds, "");
return s;
}
var rowClsNm = "alternaterow";
var colClsNm = "sortedcolumn";
var rowTest = new RegExp(rowClsNm, "gi");
var colTest = new RegExp(colClsNm, "gi");
function makePretty(tblEl, col){
var i, j;
var rowEl, cellEl;
for(i = 0; i < tblEl.rows.length; i++){
rowEl = tblEl.rows[i];
rowEl.className = rowEl.className.replace(rowTest, "");
if(i % 2 != 0)
rowEl.className += " " + rowClsNm;
rowEl.className = normalizeString(rowEl.className);
for (j = 2; j < tblEl.rows[i].cells.length; j++){
cellEl = rowEl.cells[j];
cellEl.className = cellEl.className.replace(colTest, "");
if (j == col)
cellEl.className += " " + colClsNm;
cellEl.className = normalizeString(cellEl.className);
}
}
var el = tblEl.parentNode.tHead;
rowEl = el.rows[el.rows.length - 1];
for(i = 2; i < rowEl.cells.length; i++){
cellEl = rowEl.cells[i];
cellEl.className = cellEl.className.replace(colTest, "");
if(i == col)
cellEl.className += " " + colClsNm;
cellEl.className = normalizeString(cellEl.className);
}
}
function setRanks(tblEl, col, rev){
var i = 0;
var incr = 1;
if(tblEl.reverseSort[col])
rev = !rev;
if(rev){
incr = -1;
i = tblEl.rows.length - 1;
}
//我补充,用判断是否升、降序来控制背景
if(rev){
pxbiaoshi=1;
}else{
pxbiaoshi=2;
}/* */
$("th").find("a").click(function(e) {
$(this).parents("tr").find("th a").removeClass("bgsx");
$(this).parents("tr").find("th a").removeClass("bgjx");
if(pxbiaoshi==1){
$(this).addClass("bgsx");
}
if(pxbiaoshi==2){
$(this).addClass("bgjx");
}
});/**/
//补充结束
var count = 1;
var rank = count;
var curVal;
var lastVal = null;
while(col > 1 && i >= 0 && i < tblEl.rows.length){
curVal = getTextValue(tblEl.rows[i].cells[col]);
if(lastVal != null && compareValues(curVal, lastVal) != 0)
rank = count;
tblEl.rows[i].rank = rank;
lastVal = curVal;
count++;
i += incr;
}
var rowEl, cellEl;
var lastRank = 0;
/*for(i = 0; i < tblEl.rows.length; i++){
rowEl = tblEl.rows[i];
cellEl = rowEl.cells[0];
while(cellEl.lastChild != null)
cellEl.removeChild(cellEl.lastChild);
if(col > 1 && rowEl.rank != lastRank){
cellEl.appendChild(document.createTextNode(rowEl.rank));
lastRank = rowEl.rank;
}
}*/
}