473,799 Members | 3,255 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

ie6 Insert Row at specific Row Index of Table

Can someone show me how to insert a row at any given row index of an
already created table? It only has to work in IE6 (used on intranet at
work).

Specifically, if a table is 20 rows in total (thought his will vary),
and someone wants to insert a new row at row 5, i need for one row to
be added, and each of the rows from 5-20 to be "cloned" to 6-21.

The contents of row 5 may vary as well; it is not a straight copy of an
exisiting row.

I have seen something that did this very thing, but it used innerHTML,
and I have read this is inavisable for tables.

Thanks,
Ann

Feb 5 '06
28 18541
VK wrote:
RobG wrote:
If adding rows using document.create Element() and appendChild(), some
browsers (e.g. IE) require that you append it to a tbody element - other
browsers (e.g. Gecko & KHTML based browsers) let you append it to the table.

Not totally right.
IE automatically creates at least one tbody element during the initial
page parsing. So either you added <tbody> tag or not you still have
tBody section and appendChild will add rows to there.
At the same time <thead> and <tfoot> elements are not created
automatically, so in order to insert rows to tHead or tFoot you have to
mark up your table in advance (or create header and footer
pragrammaticall y)

Other browsers do not create tBody automatically. On attempt to insert
a row to a table without <tbody> section three outcomes are possible:
1) the operation will fail
2) new row is added as direct child of table
3) on the first attempt to insert a row tBody section is created and
new row is added as a child if it (namely emulation of IE behavior).

3 is the specified action for HTMLTableElemen t.insertRow(), provided you
don't specify a row greater than 0.
While the 3rd one is currently the winning one, but all three outcomes
are still possible between different *rather modern* browsers and
versions.

Works in Firefox and Opera, which browsers don't work as expected?

--
Ian Collins.
Feb 6 '06 #11
VK wrote:
RobG wrote:
If adding rows using document.create Element() and appendChild(), some
browsers (e.g. IE) require that you append it to a tbody element - other
browsers (e.g. Gecko & KHTML based browsers) let you append it to the table.

Not totally right.


The language was not perfect, but it is correct. In IE you must append a
row created with createElement to a tbody (or thead or tfoot) element. In
other browsers, you can add it to the table - where it will be appended as
the last child of the first tbody element.

IE automatically creates at least one tbody element during the initial
page parsing. So either you added <tbody> tag or not you still have
tBody section and appendChild will add rows to there.
Which is the correct behaviour for any standards compliant browser. A
tbody element is mandatory, the tags aren't.

At the same time <thead> and <tfoot> elements are not created
automatically, so in order to insert rows to tHead or tFoot you have to
mark up your table in advance (or create header and footer
pragrammaticall y)
Of course. thead and tfoot elements only exist if you put them in the
markup or create them using script. Otherwise they won't exist.


Other browsers do not create tBody automatically.
Which ones? If they don't, they aren't compliant with HTML 4.

On attempt to insert
a row to a table without <tbody> section three outcomes are possible:
1) the operation will fail
If the browser supports insertRow (which was part of DOM 1 in 1998), then
it should not fail. If it's not supported, feature testing should detect
that and some other solution should be attempted.

2) new row is added as direct child of table
In which browser? Any I've tested *always* create a tbody even if the tags
aren't coded in the HTML source, as per the HTML 4 specification.

3) on the first attempt to insert a row tBody section is created and
new row is added as a child if it (namely emulation of IE behavior).
Rubbish. The tbody is created when the HTML source for the table is
parsed, whether the tags are there or not because that is what the HTML 4
spec says should happen. It is not created as a result of using insertRow.

That IE has the same behaviour as other browsers doesn't mean they are
emulating IE, it just means IE follows the spec.

head and body tags are optional but the elements aren't, is that an
emulation of IE too?

While the 3rd one is currently the winning one, but all three outcomes
are still possible between different *rather modern* browsers and
versions.
Please state any modern browser that does either 1 or 2.


This is why I'd like to repeat: if one plans to script a table, always
markup <thead>, <tfoot> and <tbody> manyally, do not trust the parser.
That is not good advice. thead and tfoot are only required if you actually
use them, they aren't allowed to be empty so if you don't have any need for
them, don't code them. tbody *tags* are not mandatory, read the spec.

If you do not plan to script the table (add/remove/sort rows) then
<thead>, <tfoot> and <tbody> can be securely omited.


They can be securely omitted anyway.

--
Rob
Feb 6 '06 #12
Ian Collins wrote:
Thomas 'PointedEars' Lahn wrote:
And be sure that you insert it as child element of a `thead' or `tbody'
element.
Unnecessary and I think plain wrong, insertRow is an HTMLTableElemen t
method and it adds a tbody if the table is empty.

I remember to have read here that the latter does not happen in all DOMs,
especially I remember to have read here that it does not happen in the IE
DOM. Maybe I remember incorrectly.


If you'd tried the mickey mouse example (rather than pulling it apart)
you would have seen that it does work in IE (the OP's requirement).


I do not have IE here, and it remains to be seen if it works in _all_ IE
versions on all possible platforms (the OP's requirement was IE_6_ only).
<table id='test1'>
</table>

This is not Valid (X)HTML. The `table' element requires at least the
`tbody' element in HTML, and although its start and end tags are optional
in HTML, its content model requires the `tr' element. In XHTML, the
content model of the `table' element requires at least one `tbody' or
one `tr' element.


I don't care, it was a quick demo. The web is full of such
non-conforming code and browsers cope with it. If you try it, you will
see than IE automatically inserts the tbody.


Scripting, especially DOM scripting, operating from within and on not Valid
markup has been proven to be inherently unreliable. Examples/demos should
be Valid or they are next to useless.
PointedEars
Feb 6 '06 #13
Ian Collins wrote :
which browsers don't work as expected?


InsertRow() is not working accordingly
http://www.gtalbot.org/BrowserBugsSe...otWorking.html

Everything was nicely reported at IE 6 programming bug wiki page.
Search for
"insertRow( ) in iteration loop does not work"
at
http://channel9.msdn.com/wiki/defaul...rogrammingBugs

Gérard
--
remove blah to email me
Feb 6 '06 #14
Thomas 'PointedEars' Lahn wrote :
Ian Collins wrote:


HTML:

<table id='test1'>
</table>


This is not Valid (X)HTML. The `table' element requires at least the
`tbody' element in HTML, and although its start and end tags are optional
in HTML, its content model requires the `tr' element. In XHTML, the
content model of the `table' element requires at least one `tbody' or
one `tr' element.
<table id='test2'>
<tbody>
<tr>
<td name='cell0'/>


This is not Valid (X)HTML, `td' elements do not have a `name' attribute.
The SHORTTAG syntax used is equivalent to

<td name='cell0'>&g t;</td>

in HTML, and not recommended for XHTML per XML (as the `td' element is
not declared EMPTY there).
<tr>
<tr>


This is not Valid (X)HTML, the `tr' element's content model requires the
`th' or `td' element. In XHTML, the close tag is not optional.
<td name='cell1'/>
<tr>


See above.
<tbody>
</table>

Script:

var test1 = document.getEle mentById('test1 ');
test1.insertRow (-1);


These lack the previous feature test.
<URL:http://pointedears.de/scripts/test/whatami>


The page at the above url has validation errors. Isn't strange to see
people like 'PointedEars' telling others about valid webpage when most
of his own website pages fail to pass validation and they don't even use
a strict DTD.

When someone like Thomas 'PointedEars' Lahn has well above 500
validation markup errors on his site, then he should fix these instead
of lecturing others about valid HTML.

Gérard
--
remove blah to email me
Feb 6 '06 #15
Ok, I have successfull used insertRow to put a row into my table.
Trouble is, I don't know how to put cell content there! Can someone
show me working code that inserts a row that looks like this:

<tr id="tree_row_3" >
<td width="20" height="20">&nb sp;</td>
<td width="20" height="20"><im g src="../images/icon_join.gif"
width="19" height="16" /></td>
<td width="20" height="20"><im g src="../images/icon_ok.gif"
width="16" height="16" /></td>
<td colspan="7">Thr ee</td>
</tr>

Thanks so much!

Ann
PS: I have spent an hour googling "HTMLTableEleme nt insertRow" and can
find only the theory behind it, not working examples...

Feb 6 '06 #16
Giggle Girl wrote :
Ok, I have successfull used insertRow to put a row into my table.
Trouble is, I don't know how to put cell content there! Can someone
show me working code that inserts a row that looks like this:

<tr id="tree_row_3" >
<td width="20" height="20">&nb sp;</td>
<td width="20" height="20"><im g src="../images/icon_join.gif"
width="19" height="16" /></td>
<td width="20" height="20"><im g src="../images/icon_ok.gif"
width="16" height="16" /></td>
<td colspan="7">Thr ee</td>
</tr>

Thanks so much!

Ann
PS: I have spent an hour googling "HTMLTableEleme nt insertRow" and can
find only the theory behind it, not working examples...


Study this example:
Dynamically creating, populating and inserting a table
http://www.gtalbot.org/DHTMLSection/CreatingTable.html

Please don't forget to read my copyright notice.
http://www.gtalbot.org/Varia/CopyrightNotice.html

Gérard
--
remove blah to email me
Feb 6 '06 #17
Thomas 'PointedEars' Lahn wrote:
Scripting, especially DOM scripting, operating from within and on not Valid
markup has been proven to be inherently unreliable. Examples/demos should
be Valid or they are next to useless.

How can I show IE adding the missing element if I include it in the markup?

--
Ian Collins.
Feb 6 '06 #18
Giggle Girl wrote:
Ok, I have successfull used insertRow to put a row into my table.
Trouble is, I don't know how to put cell content there! Can someone
show me working code that inserts a row that looks like this:

<tr id="tree_row_3" >
<td width="20" height="20">&nb sp;</td>
<td width="20" height="20"><im g src="../images/icon_join.gif"
width="19" height="16" /></td>
<td width="20" height="20"><im g src="../images/icon_ok.gif"
width="16" height="16" /></td>
<td colspan="7">Thr ee</td>
</tr>

Thanks so much!

Ann
PS: I have spent an hour googling "HTMLTableEleme nt insertRow" and can
find only the theory behind it, not working examples...


HTMLTableElemen t.insertRow() returns an HTMLElement (the new row). You
can use insertCell() to add a cell, see my example.

--
Ian Collins.
Feb 6 '06 #19
RobG wrote:
3) on the first attempt to insert a row tBody section is created and
new row is added as a child if it (namely emulation of IE behavior).

Rubbish. The tbody is created when the HTML source for the table is
parsed, whether the tags are there or not because that is what the HTML
4 spec says should happen. It is not created as a result of using
insertRow.

Not rubbish, it depends on the context. If you are building a table in
script, the tbody will be added when you add the first row, try:

var table = document.create Element('table' );
alert(table.chi ldNodes.length) ;
row = table.insertRow (-1);
alert(table.chi ldNodes.length) ;
alert(table.fir stChild.nodeNam e);

A conforming browser will alert TBODY.

--
Ian Collins.
Feb 6 '06 #20

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

1
1540
by: Doron | last post by:
is there a setting that will ebnable uniform extent allocation upon creation of index/table by default ? if there isn't any default setting can you code it in? thanks, Doron
1
6072
by: Jay | last post by:
Hi I have a huge table with over 100million records and on regular basis ineed to delete nearly a million records and insert a million records. Currently I delete indexes before going through the process and recreate the indexes which takes a very very long time. IS there a way to disable indexes and re enable them after doing insert and delete by reindexing or anything of that sort? OR Is there an approach to append two tables with...
0
6893
by: crypto_solid via AccessMonster.com | last post by:
I have been using a SQL database with a VB5 frontend for about 5 years. Works well. Unfortunately I don't have access to the source code. I was tasked with implementing a "job entry" application that will allow a restricted list of users to enter jobs in the database. We do not want these users to be able to access all the data. I created an application in Access 2002 that performs this function seemingly quite well. However we now...
1
1553
by: Daniele | last post by:
Hi, how is it possible to create a full-text index table? Thanks, Daniele
1
1296
by: Bill Nguyen | last post by:
Below is the content of a textbox after data was captured from a barcode scanner. Instead of saving it into a text file and process later, I would like to be able to read the items (delimited by <CR>) and insert into a table. Please help show me an efficient way to do it. Thanks Bill
1
4564
by: technocraze | last post by:
Hi guys, I am having trouble resolving this error. Below mentioned is my code and implmentation. MS Acess is my front end and sql server is my backend. What i want to achieve is to be able to insert StudentId in the table matching the values chosen in the combo boxes and listboxes. This sound more like searching the table to insert StudentId matching the criterias. I have set the necessary configuration for ODBC connection (File...
7
14463
gcoaster
by: gcoaster | last post by:
Hello Gurus, I am stuck! this will be easy I am sure for you. I have a Text Box where I type In a name. I am trying to get that value to insert into another table when I TAB to the next field. Most of the INSERT code examples I find deal with multiple VALUES. could you point me in the right direction?
3
3175
by: grumpygit | last post by:
Hi. I am trying to get the columns in the navigation/index table to all be the same width on the page in link below. Code in attached .zip file Any advice would be greatly appreciated as I am a complete novice when it comes to CSS. Thanks. GG http://jinx.byethost13.com/template.php
1
1665
by: chennaibala | last post by:
hi frds... in my hiden textbox.i have following values... robert|true|true|false|arun|true|false|true|anu|true|true|false| i want to splits in to token and insert in mysql table in following manner namefield writefiled readfield speakfield robert true true false arun true false true anu true true false
1
2133
pradeepjain
by: pradeepjain | last post by:
Hii guys, I have 2 tables in which data exists of a same user like his table1:login details and table2: his further details . I have a form where in his both login and rest of details are collected. When i submit the form it needs to insert data in both the tables . Which is the best method to do it . insert into 1st table and if successful then insert into 2nd table ?
0
10484
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
0
10251
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
0
10027
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
0
9072
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
1
7565
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
6805
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
5585
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
1
4141
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
2
3759
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.