怎么合并表格中同一列内容相同的行?
如何合并表格中同一列内容相同的行??
JavaScript 如何合并table中一列中内容相同的行??
如:
原始表:
|---|---|---|---|---|
| A | B | C |100|150|
|---|---|---|---|---|
| A | B | D |200|250|
|---|---|---|---|---|
| A | E | C |100|150|
|---|---|---|---|---|
| A | E | D |120|250|
|---|---|---|---|---|
经过JS处理后的表
|---|---|---|---|---|
| | B | C |100|150|
| | |---|---|---|
| | | D |200|250|
| |---|---|---|---|
| A | | C |100|150|
| | |---|---|---|
| | E | D |120|250|
|---|---|---|---|---|
怎样实现如上的效果呢?
重复数据单元格自动向下合并(数据部份不合并).
如果原始表中的数据我是通过从查找数据库得到一个resultList
然后通过Struts的<logic:iterate>迭代得出来的,那可以实现合并在同一列中内容相同的行吗?
JavaScript 如何合并table中一列中内容相同的行??
如:
原始表:
|---|---|---|---|---|
| A | B | C |100|150|
|---|---|---|---|---|
| A | B | D |200|250|
|---|---|---|---|---|
| A | E | C |100|150|
|---|---|---|---|---|
| A | E | D |120|250|
|---|---|---|---|---|
经过JS处理后的表
|---|---|---|---|---|
| | B | C |100|150|
| | |---|---|---|
| | | D |200|250|
| |---|---|---|---|
| A | | C |100|150|
| | |---|---|---|
| | E | D |120|250|
|---|---|---|---|---|
怎样实现如上的效果呢?
重复数据单元格自动向下合并(数据部份不合并).
如果原始表中的数据我是通过从查找数据库得到一个resultList
然后通过Struts的<logic:iterate>迭代得出来的,那可以实现合并在同一列中内容相同的行吗?
1 楼
cnng007
2007-10-28
<p><font>这是本人写的一个函数<br/>
function uniteSameCells(tableId,subjectIndex) {<br/>
if(subjectIndex==null) {<br/>
subjectIndex=1;<br/>
}<br/>
var oTable = eval(tableId);<br/>
var oTrs = oTable.rows;<br/>
var lTr = oTrs.length;<br/>
var subject = null;<br/>
var subjectTd = null;<br/>
var subjectStartIndex = -1;<br/>
for(var i=0; i<lTr; i++) {<br/>
var oTds = oTrs[i].cells;<br/>
if(oTds.length>=subjectIndex) {<br/>
var tempSubject = oTds[subjectIndex-1].innerText;<br/>
if(subjectStartIndex==-1) {<br/>
subjectTd = oTds[subjectIndex];//<br/>
subject = tempSubject;//<br/>
subjectStartIndex = i; //<br/>
} else {<br/>
if(subject==tempSubject) {<br/>
//oTds[subjectIndex].innerText="";<br/>
oTds[subjectIndex-1].removeNode(true);<br/>
} else {<br/>
//union the td<br/>
subjectTd.rowSpan = i - subjectStartIndex;<br/>
//<br/>
subjectTd = oTds[subjectIndex-1];<br/>
subject = tempSubject;<br/>
subjectStartIndex = i;<br/>
}<br/>
}<br/>
}<br/>
}</font></p>
<p><font> if(subjectStartIndex = -1) {<br/>
subjectTd.rowSpan = i - subjectStartIndex;<br/>
subjectTd = null;<br/>
subject = null;<br/>
subjectStartIndex = -1;<br/>
}<br/>
}</font></p>
function uniteSameCells(tableId,subjectIndex) {<br/>
if(subjectIndex==null) {<br/>
subjectIndex=1;<br/>
}<br/>
var oTable = eval(tableId);<br/>
var oTrs = oTable.rows;<br/>
var lTr = oTrs.length;<br/>
var subject = null;<br/>
var subjectTd = null;<br/>
var subjectStartIndex = -1;<br/>
for(var i=0; i<lTr; i++) {<br/>
var oTds = oTrs[i].cells;<br/>
if(oTds.length>=subjectIndex) {<br/>
var tempSubject = oTds[subjectIndex-1].innerText;<br/>
if(subjectStartIndex==-1) {<br/>
subjectTd = oTds[subjectIndex];//<br/>
subject = tempSubject;//<br/>
subjectStartIndex = i; //<br/>
} else {<br/>
if(subject==tempSubject) {<br/>
//oTds[subjectIndex].innerText="";<br/>
oTds[subjectIndex-1].removeNode(true);<br/>
} else {<br/>
//union the td<br/>
subjectTd.rowSpan = i - subjectStartIndex;<br/>
//<br/>
subjectTd = oTds[subjectIndex-1];<br/>
subject = tempSubject;<br/>
subjectStartIndex = i;<br/>
}<br/>
}<br/>
}<br/>
}</font></p>
<p><font> if(subjectStartIndex = -1) {<br/>
subjectTd.rowSpan = i - subjectStartIndex;<br/>
subjectTd = null;<br/>
subject = null;<br/>
subjectStartIndex = -1;<br/>
}<br/>
}</font></p>
2 楼
ashee
2007-11-02
你的for()没有全
3 楼
pacer123
2007-11-16
楼主粗心大意,这个函数不报错才怪。