- From: Jeff Fink <jfink@ryos.com>
- Date: Wed, 13 Oct 1999 13:02:26 -0400 (EDT)
- To: <www-dom@w3.org>
I have this table:
<TABLE ID="tbl">
<THEAD>
<TR>
<TH>Col 0</TH>
</TR>
</THEAD>
<TBODY>
<TR>
<TD>Row 0</TD>
</TR>
<TR>
<TD>Row 1</TD>
</TR>
</TBODY>
</TABLE>
I want to switch the order of the rows in the table body and there does not
seem to be a straightforward way to do this. I can write this code:
var pTable = document.getElementById("tbl");
var pRow0 = pTable.tBodies[0].rows[0];
var pRow1 = pTable.tBodies[0].rows[1];
var pNewRow = pTable.tBodies[0].insertRow(0);
var pCell, i, j;
for(i = 0; i < pRow1.cells.length; i++)
{
pCell = pNewRow.insertCell(i);
for(j = 0; j < pRow1.cells[i].childNodes.length; j++)
pCell.appendChild(pRow1.cells[i].childNodes[j]);
}
pTable.tBodies[0].deleteRow(2);
However, if I've set any attributes on the HTMLTableRowElement or on the
HTMLTableCellElement via setAttribute(), they get lost because I can't clone
these elements and insert them into the new table. Why aren't there
insertRow() and insertCell() methods that allow you to pass the node you
want for the new Row/Cell? If these methods were in place, this problem
would become:
var pTable = document.getElementById("tbl");
var pRow1 = pTable.tBodies[0].rows[1];
pTable.tBodies[0].insertRow(pRow1, 0);
And of course, all my attributes get moved over because I'm moving a single
node rather than copying everything.
-Jeff
Received on Thursday, 14 October 1999 10:16:27 UTC