var tableCombin = function (table, splitChar) {
this.table = table;
this.splitChar = splitChar;
};
tableCombin.prototype = {
//合并单元格
combineTableHeader: function () {
var tb = this.table;
if (tb) {
var header = tb.rows[0];
var endIndex = header.cells.length; //获取Y轴最大值
var maxY = 1, tmpLen = 1;
for (var i = 0; i < endIndex; i++) {
tmpLen = header.cells[i].innerHTML.split(this.splitChar).length;
if (tmpLen > maxY)
maxY = tmpLen;
} //给header赋值
if (maxY > 1) {
var newRows = [];
var tmpRow;
var tmpTH;
var tmpTHContent;
for (var i = 1; i < maxY; i++) {
tmpRow = newRows[i] = tb.insertRow(0);
for (var j = 0; j < endIndex; j++) {
tmpTH = this.insertTH(tmpRow);
tmpTH.innerHTML = header.cells[j].innerHTML;
}
}
newRows[0] = header; //Y方向分割单元格
for (var i = 0; i < maxY; i++) {
tmpRow = newRows[i];
endIndex = tmpRow.cells.length;
for (var j = endIndex; j >= 0; j--) {
tmpTH = tmpRow.cells[j];
if (typeof (tmpTH) != 'undefined') {
tmpTHContent = tmpTH.innerHTML.split(this.splitChar);
if (tmpTHContent.length == 1) {
if (i == (maxY - 1)) {
tmpTH.rowSpan = maxY;
}
else {
tmpTH.setAttribute('delete', '1');
}
}
else {
if (typeof (tmpTHContent[maxY - i - 1]) != 'undefined') {
tmpTH.innerHTML = tmpTHContent[maxY - i - 1];
}
else {
if (i + 1 < maxY) {
newRows[i + 1].cells[j].rowSpan = (i + 2);
tmpTH.setAttribute('delete', '1');
}
else {
tmpTH.innerHTML = "";
}
}
}
}
}
} //X轴合并
this.XCombine(newRows, "TH"); //删除 标志 为delete的td
this.deleteFlag(newRows, "TH");
}
}
},
combinTD: function () {
var tb = this.table;
if (tb) {
//Y轴合并
this.YCombine(tb.rows, "TD", [tb.rows - 1]); var Ymax = tb.rows.length;
//X轴合并
this.XCombine(tb.rows, "TD"); //删除 标志 为delete的td
this.deleteFlag(tb.rows, "TD");
}
},
insertTH: function (row) {
var th = document.createElement("th");
row.appendChild(th);
return th;
},
YCombine: function (rows, tagName, filterIndexArr) {
if (typeof (tagName) == "undefined")
tagName = "TD";
if (typeof (filterIndexArr) == "undefined")
filterIndexArr = [];
var Ymax = rows.length;
var tmpRow, tmpTD, tmpContent, comRow, comTD;
for (var i = 0; i < Ymax && !this.eleIsInArr(filterIndexArr, i); i++) {
tmpRow = rows[i];
for (var k = 0; k < tmpRow.cells.length; k++) {
tmpRow = rows[i];
tmpTD = tmpRow.cells[k];
if (tmpTD.tagName == tagName) {
tmpContent = tmpTD.innerHTML;
var j = i + 1;
for (; j < Ymax - 1 && !this.eleIsInArr(filterIndexArr, i); j++) {
comRow = rows[j];
comTD = comRow.cells[k];
if (typeof (comTD) != 'undefined' && comTD.tagName == tagName && tmpContent != comTD.innerHTML) {
break;
}
}
if (j - i > 1) {
rows[i].cells[k].rowSpan = (j - i);
for (var m = i + 1; m < j; m++) {
if (typeof (rows[m].cells[k]) != "undefined")
rows[m].cells[k].setAttribute('delete', '1');
}
}
}
}
}
},
XCombine: function (rows, tagName) {
if (typeof (tagName) == "undefined")
tagName = "TD";
var Ymax = rows.length;
for (var i = 0; i < Ymax; i++) {
var j = 0;
tmpRow = rows[i];
var endIndex = tmpRow.cells.length;
while (j < endIndex) {
tmpTD = tmpRow.cells[j];
if (typeof (tmpTD) != "undefined" && tmpTD.getAttribute("delete") != "1") {
var k = j + 1;
for (; k < endIndex; k++) {
if (typeof (tmpRow.cells[k]) != "undefined") {
if (tmpRow.cells[k].innerHTML != tmpTD.innerHTML)
break;
}
}
if ((k - j) > 1) {
tmpTD.colSpan = (k - j);
for (var m = j + 1; m < k && typeof (tmpRow.cells[m]) != "undefined"; m++) {
tmpRow.cells[m].setAttribute('delete', '1');
}
}
}
j++;
}
}
},
deleteFlag: function (rows, tagName) {
if (typeof (tagName) == "undefined")
tagName = "TD";
var Ymax = rows.length;
for (var i = 0; i < Ymax; i++) {
tmpRow = rows[i];
for (var k = tmpRow.cells.length - 1; k >= 0; k--) {
tmpTD = tmpRow.cells[k];
if (tmpTD.tagName == tagName && tmpTD.getAttribute("delete") == "1") {
tmpTD.parentNode.removeChild(tmpTD);
}
}
}
}, eleIsInArr: function (arr, ele) {
if (arr.length == 0)
return true;
for (var i in arr) {
if (arr[i] == ele)
return true;
}
return false;
}
};请问大家,我这样的写法是不是不好。
别人看不懂,应该这样去写。function InitGridView(oGridview, sDataSeparator, iDataKeyCount) {
if (oGridview == null)
return null; oGridview["sDataSeparator"] = sDataSeparator;
oGridview["iDataKeyCount"] = iDataKeyCount; oGridview.getGridViewCheckedBox = function () {
if (document.getElementById(this.id) != null)
return document.getElementById(this.id).getElementsByTagName('input');
else
return document.getElementsByTagName('input');
} oGridview.isGridViewCheckedBox = function (oCheckedBox) {
return (typeof (oCheckedBox.selectItemFor) != "undefined" && this.id.indexOf(oCheckedBox.selectItemFor) != -1);
}
return oGridview ;
}
解决方案 »
- 谁看得懂能解答我 ?重谢
- iframe如何返回指定的src
- jquery 动态修改表格的数据问题
- 【关闭】也有不同?
- 一个比较ft的问题:当焦点在<input type="file">上时,能按回车打开文件选择对话框吗?
- 如何让一个select的值控制另一个select是否可选?我这样做的,可不行。哪位能帮我?谢谢!
- 如何判断某一窗体是否已经打开?(目的:避免“刷新”已打开的窗口)
- iframe的传参数问题,急!!
- 我想让IE开启时无标题栏等所有的信息,怎么去掉啊!!
- javascript的chm版帮助文件
- 如何让它确定的情况下做地址跳转
- 如何通过JS或jquery把fileupload里面的图片转为byte[]类型?
建议看看Google的javascript编码规范:http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml