faqts : Computers : Programming : Languages : JavaScript : Tables

+ Search
Add Entry AlertManage Folder Edit Entry Add page to http://del.icio.us/
Did You Find This Entry Useful?

353 of 423 people (83%) answered Yes
Recently 7 of 10 people (70%) answered Yes

Entry

How do I add a row to a table?
How can I add a row to a table in IE5+ for an unparsed html string representing a row ("<tr class=fo

Apr 14th, 2000 10:08
Martin Honnen, dipster relly,


IE4+ and NN6 allow that with dom methods
  var row = tableElement.insertRow(index);
  var cell = tableRow.insertCell(index);
NN6 also allows addition of a row as unparsed html while IE4/5 are 
reluctant to set the innerHTML of TABLE/TBODY/TR elements.
The following has example code adding a row with two columns to a table:

<HTML>
<HEAD>
<STYLE>
.js {
  color: white;
  background-color: orange;
}
</STYLE>
<SCRIPT>
function addRowDOM (tableID) { 
// pass every cell content as a futher arg
  var table = 
    document.all ? document.all[tableID] :
      document.getElementById(tableID);
  if (arguments.length > 1) {
    var row = table.insertRow(table.rows.length);
    if (document.all) {
      for (var i = 1; i < arguments.length; i++) {
        var cell = row.insertCell(i - 1);
        cell.innerHTML = arguments[i];
      }
    }
    else if (document.getElementById) { 
//NN6 bug inserting cells in wrong sequence
      for (var i = arguments.length - 1; i >= 1; i--) {
        var cell = row.insertCell(arguments.length - 1 - i);
        cell.appendChild(document.createTextNode(arguments[i]));
      }
    }
  }
}
function addRowHTML (tableID, html) {
  if (document.getElementById && !document.all) {
    var table = document.getElementById(tableID);
    var tbody = table.tBodies[table.tBodies.length - 1];
    var range = document.createRange();
    range.setStartAfter(tbody.lastChild);
    var docFrag = range.createContextualFragment(html);
    tbody.appendChild(docFrag);
  }
}
</SCRIPT>
</HEAD>
<BODY>
<BUTTON 
  ONCLICK="addRowDOM
('table1', 'JavaScript.FAQTs.com', 'www.FAQTs.com');"
>
add row per DOM methods
</BUTTON>
<BUTTON 
  ONCLICK="addRowHTML('table1', 
'<TR><TD>JavaScript.FAQTs.com<\/TD><TD>www.FAQTs.com<\/TD><\/TR>');"
>
add row as html
</BUTTON>
<TABLE ID="table1" BORDER="1" CLASS="js">
<TBODY>
<TR>
<TD>
JavaScript.FAQTs.com
</TD>
<TD>
www.FAQTs.com
</TD>
</TR>
</TBODY>
</TABLE>
</BODY>
</HTML>