这样的写法是不是不好?

jianshao810 2011-07-15 02:48:04

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 ;
}
...全文
161 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
rainsilence 2011-07-16
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 waistcoat22 的回复:]
建议看看Google的javascript编码规范:http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml
[/Quote]
你看过吗?
lsw645645645 2011-07-16
  • 打赏
  • 举报
回复
代码好不好看不知道啊,楼主的头像倒是挺好看的。
多加点注释,让别人能明白楼主算法的思想,怎么执行,完成什么任务就行了。
  • 打赏
  • 举报
回复
如果是你自己用,怎么写都好
如果是写给别人调用,以及出于维护的考虑,个人赞成第一种
挨踢直男 2011-07-15
  • 打赏
  • 举报
回复
自己觉得怎么样好就怎么好啊
反正你光发这么几段js,这边没人有耐心去看的,也不一定看的懂
写的多了,自然就会有所感悟
Waistcoat22 2011-07-15
  • 打赏
  • 举报
回复

建议看看Google的javascript编码规范:http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml
jianshao810 2011-07-15
  • 打赏
  • 举报
回复
太感谢大家。。
只要不为了形式而形式,不为了精简而精简,体现程序的基本精神,就可以了。

这句深有感触啊。
我觉得第一种挺好的。
mokson 2011-07-15
  • 打赏
  • 举报
回复
什么,你说的是语法吗?
豆虫 2011-07-15
  • 打赏
  • 举报
回复
支持第一种
至于为什么别人会看不懂 可能他们的知识还没有达到你的层次
js面向对象编程我倒是觉得简洁易懂 方便其他模块的调用 只要我们不刻意去写些奇怪的代码就好
rainsilence 2011-07-15
  • 打赏
  • 举报
回复
第一种写法是面向对象
第二种写法是函数式编程。
并没有哪种好,哪种不好
虽然我比较偏向第一种。。。。
  • 打赏
  • 举报
回复
至于有时别人说看不懂的事情,如果你选择的形式没问题,那就是你的注释或程序说明文档有问题了。
  • 打赏
  • 举报
回复
只要不为了形式而形式,不为了精简而精简,体现程序的基本精神,就可以了。
小笨熊 2011-07-15
  • 打赏
  • 举报
回复
都可以,适合自己的就是最好的
Null_Reference 2011-07-15
  • 打赏
  • 举报
回复
好、、不过别人看不上好清楚
sygsygsyg222 2011-07-15
  • 打赏
  • 举报
回复
第一种写法很好啊 ,我师父两年前用的是第2种 现在用的是第一种
MadEric 2011-07-15
  • 打赏
  • 举报
回复
没觉得有什么不好啊
xuexiaodong2009 2011-07-15
  • 打赏
  • 举报
回复
同意你的说法,
给机器写的代码都会写,给人写的代码才是真正的高手

87,922

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧