P
putty
I found a few posts of people asking about insertCell()/insertRow() not
working in IE6 SP2, and a few others about getting "null is null or not
an object" errors, but no one posted a solution anywhere or noted this
tiny yet curious change in SP2.. so here it is:
In IE6 SP2 rows must be inserted into a tBody instead of a Table
directly, after that you may insert TDs into TRs any way you wish.
insertRow() and insertCell() work the same as always; the underlying
problem simply emanated from the fact that people were adding TRs to
Tables instead of their tBodies. I guess IE6 SP2 is less forgiving than
SP1?
The following will not work in IE6 SP2 but will work in Firefox and IE6
SP1:
-- code --
var Table = document.createElement( "Table" );
var Row = Table.insertRow(-1);
var Cell1 = Row.insertCell(-1);
var Cell2 = Row.insertCell(-1);
-- code --
The following will work in Firefox, IE6 SP1, and IE6 SP2:
-- code --
var Table = document.createElement( "Table" );
var tBody = document.createElement( "tBody" );
Table.appendChild( tBody );
var Row = tBody.insertRow(-1);
var Cell1 = Row.insertCell(-1);
var Cell2 = Row.insertCell(-1);
-- code --
The error several IE6 SP2 clients saw when running the non-working code
was "null is null or not an object."
Hope this helps someone.
-- putty
working in IE6 SP2, and a few others about getting "null is null or not
an object" errors, but no one posted a solution anywhere or noted this
tiny yet curious change in SP2.. so here it is:
In IE6 SP2 rows must be inserted into a tBody instead of a Table
directly, after that you may insert TDs into TRs any way you wish.
insertRow() and insertCell() work the same as always; the underlying
problem simply emanated from the fact that people were adding TRs to
Tables instead of their tBodies. I guess IE6 SP2 is less forgiving than
SP1?
The following will not work in IE6 SP2 but will work in Firefox and IE6
SP1:
-- code --
var Table = document.createElement( "Table" );
var Row = Table.insertRow(-1);
var Cell1 = Row.insertCell(-1);
var Cell2 = Row.insertCell(-1);
-- code --
The following will work in Firefox, IE6 SP1, and IE6 SP2:
-- code --
var Table = document.createElement( "Table" );
var tBody = document.createElement( "tBody" );
Table.appendChild( tBody );
var Row = tBody.insertRow(-1);
var Cell1 = Row.insertCell(-1);
var Cell2 = Row.insertCell(-1);
-- code --
The error several IE6 SP2 clients saw when running the non-working code
was "null is null or not an object."
Hope this helps someone.
-- putty