467,915 Members | 1,137 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 467,915 developers. It's quick & easy.

deleteRow causes Netscape 7 to crash - why ?

Dom
Hi,

I am trying to get a dynamic table going. You click a button to add a
row. In the newly created row a button to delete the row is placed
(try the code example below). In Netscape, pressing the delete row
button crashes the browser. Why ? What is the correct way to do this ?

I am stumped why this following code works in IE and Opera but crashes
Netscape 7 (ie makes it disappear and try to send a bug report etc).

Any help would be much appreciated.

Copy and save the following code example and try running in Netscape 7
(or Mozilla 1.4) . It works fine in IE 6 and Opera 7. I've tried all
sorts of tweaking around but to no avail.

I need some expert help. Perhaps suggest the correct or other better
way of implementing this.
Here's the code:

<html><head>

<script language="javascript">

function createTableRow(oTable)
{
var thetable = document.all ? document.all[oTable] :
document.getElementById(oTable); // get table object handle
var nrows=thetable.rows.length; // get current tablesize
var row = thetable.insertRow(nrows); // create a new row object
var cell ;

cell = row.insertCell(0); cell.innerHTML="row"+nrows; // create a new
cell in the new row

// this will crash my netscape 7.2 browser but works fine in Opera
and IE
cell = row.insertCell(1); cell.innerHTML="<button
onclick='deleteTableRow(this.parentNode.parentNode .rowIndex)'>Delete</button>";

// This will behave strangely in that it will remove ALL rows from
the table - why ??? again, it works in Opera and IE.
//cell = row.insertCell(1); cell.innerHTML="<button
onclick='deleteTableRow(0)'>Delete</button>";
}

function deleteTableRow(nth)
{
var thetable = document.all ? document.all['tbl'] :
document.getElementById('tbl'); // get the tbl table object handle
thetable.deleteRow(nth); // delete the nth row from the table ####
this crashes Netscape 7 and 6 - WHY ????
}
</script>
<body bgcolor=white>
<form name="form1" method="post" action=""
enctype="multipart/form-data" >
<table border=1 width="232">
<!--col width=150><col width=150><col width=80-->
<tr><th>Name</th><th>Qty</th></tr>
</table>

<table id='tbl' border=1>
<col width=150><col width=150><col width=80>
<!-- TABLE for the order items -->
</table>

<input TYPE="button" VALUE="Add Item"
onclick="createTableRow('tbl')">
<input type="submit" name="Submit" value="Submit" >

</form></body></html>
Jul 20 '05 #1
  • viewed: 2834
Share:
2 Replies
DU
Dom wrote:
Hi,

I am trying to get a dynamic table going. You click a button to add a
row. In the newly created row a button to delete the row is placed
(try the code example below). In Netscape, pressing the delete row
button crashes the browser. Why ? What is the correct way to do this ?

I am stumped why this following code works in IE and Opera but crashes
Netscape 7 (ie makes it disappear and try to send a bug report etc).

Any help would be much appreciated.

Copy and save the following code example and try running in Netscape 7
(or Mozilla 1.4) . It works fine in IE 6 and Opera 7. I've tried all
sorts of tweaking around but to no avail.

I need some expert help. Perhaps suggest the correct or other better
way of implementing this.
Here's the code:

<html><head>

<script language="javascript">

function createTableRow(oTable)
{
var thetable = document.all ? document.all[oTable] :
document.getElementById(oTable); // get table object handle
Since the rest of the function can not be executed by MSIE 4, then there
is no point to branch the code in the above instruction.
var nrows=thetable.rows.length; // get current tablesize
var row = thetable.insertRow(nrows); // create a new row object
var cell ;

cell = row.insertCell(0); cell.innerHTML="row"+nrows; // create a new
cell in the new row

// this will crash my netscape 7.2 browser
we're still at NS 7.1 :)
but works fine in Opera and IE
cell = row.insertCell(1); cell.innerHTML="<button
onclick='deleteTableRow(this.parentNode.parentNode .rowIndex)'>Delete</button>";
I tried a few modifications of the above instruction and nevertheless,
NS 7.1 always crashed. You might have found an old - but rare - crash
bug here ... since the code works and does not crash in Opera 7.2 and
Mozilla 1.5RC2

// This will behave strangely in that it will remove ALL rows from
the table - why ??? again, it works in Opera and IE.
//cell = row.insertCell(1); cell.innerHTML="<button
onclick='deleteTableRow(0)'>Delete</button>";
}

function deleteTableRow(nth)
{
var thetable = document.all ? document.all['tbl'] :
document.getElementById('tbl'); // get the tbl table object handle
thetable.deleteRow(nth); // delete the nth row from the table ####
this crashes Netscape 7 and 6 - WHY ????
}
This deleteTableRow function could be safely removed and replaced entirely.
</script>
<body bgcolor=white>
<form name="form1" method="post" action=""
enctype="multipart/form-data" >
<table border=1 width="232">
<!--col width=150><col width=150><col width=80-->
<tr><th>Name</th><th>Qty</th></tr>
</table>

<table id='tbl' border=1>
<col width=150><col width=150><col width=80>
<!-- TABLE for the order items -->
</table>

<input TYPE="button" VALUE="Add Item"
onclick="createTableRow('tbl')">
<input type="submit" name="Submit" value="Submit" >

</form></body></html>

Your code could be optimized and be made much more compact at several
places. Your code works in Mozilla 1.5RC2 but it crashes in NS 7.1.
I would avoid resorting to innerHTML everywhere all the time and only
use DOM 2 methods. Here, with DHTML modifying the page, such coding
policy is even more true and recommendable.

In your code, your table "tb1" has 3 columns but each new row only has 2
cells (without any column span).
Despite several efforts, I could not come up with a solution which would
work in NS 7.1.

DU
--
Javascript and Browser bugs:
http://www10.brinkster.com/doctorunclear/
- Resources, help and tips for Netscape 7.x users and Composer
- Interactive demos on Popup windows, music (audio/midi) in Netscape 7.x
http://www10.brinkster.com/doctorunc...e7Section.html

Jul 20 '05 #2
"DU" <dr*******@hot-R-E-M-O-V-E-mail.com> wrote in message
news:bm**********@news.eusc.inter.net...
<snip>
I tried a few modifications of the above instruction and
nevertheless, NS 7.1 always crashed. You might have found
an old - but rare - crash bug here ... since the code works
and does not crash in Opera 7.2 and Mozilla 1.5RC2

<snip>

I could not get Netscape 7.02 to crash but I did get Mozilla 1.3 to
crash so I tested in that until it worked (at my first alteration).

The button element that is being written into the HTML has no type
attribute so the HTML 4 specification requires it to default to
type="submit". Obviously submitting a form while simultaneously deleting
it's submit button is a bit much for Mozilla 1.3 so it crashes. Adding a
type="button" attribute solved the problem.

(Another example of how understanding what represents valid HTML and its
meaning would have avoided JavaScript errors ;-)

Richard.
Jul 20 '05 #3

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

2 posts views Thread by John Geddes | last post: by
10 posts views Thread by Alex Vinokur | last post: by
1 post views Thread by John C | last post: by
13 posts views Thread by M B HONG 20 | last post: by
8 posts views Thread by Adam Louis | last post: by
2 posts views Thread by Composer | last post: by
4 posts views Thread by jamescostello | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.