T
The_Original_MB
I have a task to create tables dynamically, using the javascript DOM.
The current method uses a 1px x 1px IFRAME to loop through some data
generation stuff, and then call JS functions in the parent window to
generate the tables.
The basic idea is to add a table tag, with a thead and tbody, on the
main parent page, that has display:none set. This then becomes
display:block when there are rows to show. The rows themselves are
added directly to the visible tbody element using appendChild(). When
the results need to be refreshed, the tbody elements are removed, and
then added again.
This works well in most browsers, including Opera. However, Mac IE
always freezes when trying to generate the table, even for the first
time.
I have several different versions, and they all generate the same
issue. The tables I am creating are quite complex: multiple cells,
colspans, images, nested tables, roll over colours, styles etc. At
first, I believed it was an issue with creating images dynamically,
however it now seems that is not the case.
I have also tried creating the table and tbody tags using the DOM and
appending them to a div, but with no luck. I have also tried creating
the tables using a hidden object and then copying the innerHTML / nodes
across to the visible one. The various versions I have cover most
bases:
* using innerHTML to add content to the cells
* using the javascript DOM to create all elements and append them
* using a mixture of the both
If anybody has any feedback or suggestions then it would be really
appreciated, particularly related to the following:
* From your experience, is this realistically possible?
* Is the problem I'm experiencing related to the complexity or size
of the table I am trying to generate? If the table is simple text only,
with 2 or 3 columns and rows, then it does work.
* What is the best method to dynamically create tables and cell
content across browsers, and in Mac IE?
* Is the problem image related? Does anyone have experience of
creating images dynamically in tables in Mac IE? Do you use "new
image()" or createElement()? (using the small table sample, this was
possible using both methods, and also innerHTML on a cell).
Thanks for your help,
Matt
The current method uses a 1px x 1px IFRAME to loop through some data
generation stuff, and then call JS functions in the parent window to
generate the tables.
The basic idea is to add a table tag, with a thead and tbody, on the
main parent page, that has display:none set. This then becomes
display:block when there are rows to show. The rows themselves are
added directly to the visible tbody element using appendChild(). When
the results need to be refreshed, the tbody elements are removed, and
then added again.
This works well in most browsers, including Opera. However, Mac IE
always freezes when trying to generate the table, even for the first
time.
I have several different versions, and they all generate the same
issue. The tables I am creating are quite complex: multiple cells,
colspans, images, nested tables, roll over colours, styles etc. At
first, I believed it was an issue with creating images dynamically,
however it now seems that is not the case.
I have also tried creating the table and tbody tags using the DOM and
appending them to a div, but with no luck. I have also tried creating
the tables using a hidden object and then copying the innerHTML / nodes
across to the visible one. The various versions I have cover most
bases:
* using innerHTML to add content to the cells
* using the javascript DOM to create all elements and append them
* using a mixture of the both
If anybody has any feedback or suggestions then it would be really
appreciated, particularly related to the following:
* From your experience, is this realistically possible?
* Is the problem I'm experiencing related to the complexity or size
of the table I am trying to generate? If the table is simple text only,
with 2 or 3 columns and rows, then it does work.
* What is the best method to dynamically create tables and cell
content across browsers, and in Mac IE?
* Is the problem image related? Does anyone have experience of
creating images dynamically in tables in Mac IE? Do you use "new
image()" or createElement()? (using the small table sample, this was
possible using both methods, and also innerHTML on a cell).
Thanks for your help,
Matt