W3C home > Mailing lists > Public > www-dom@w3.org > October to December 1998

Re: An observation about "live" NodeLists

From: Stephen R. Savitzky <steve@crc.ricoh.com>
Date: 16 Oct 1998 13:32:47 -0700
To: Mike Champion <mcc@arbortext.com>
Cc: <www-dom@w3.org>
Message-ID: <qc67dk9rio.fsf@gelion.crc.ricoh.com>
Mike Champion <mcc@arbortext.com> writes:

> At 12:15 PM 10/16/98 -0700, Stephen R. Savitzky wrote:
> >Question 1: What does the following code fragment do?
> >
> >1   NodeList nl = aDocument.getElementsByTagName("p");
> >2   int numberOfParagraphs = nl.getLength();
> >3   for (int i = 0; i < numberOfParagraphs; i++) {
> >4	Node n = nl.item(i);
> >5	n.getParentNode().removeChild(n);
> >6   }

> It may be getting late on Friday, but I don't understand how either of
> these snippets deletes every OTHER paragraph; don't they delete EVERY
> paragraph???

I think this proves my point.  After item 0 is deleted, the live NodeList
gets effectively re-indexed.  The paragraph that _used_ to be item 1 is now
item 0.  The paragraph that used to be item 2 is now item 1, so that gets
deleted next.  And so on.

> You might esthetically prefer to have exceptions thrown under "normal"
> conditions, but the only way we found to define and API that worked with
> both Java/C++ and C/ECMAScript was to use exceptions only for
> "exceptional" situations.  Thus, though it may be a bit uglier, DOM
> programmers have to work in the classic tradition of checking return codes
> rather than catching exceptions for routine navigation.

On the whole I prefer style myself, but as I believe I have shown, it's not
always obvious when you have to check.  

> So, yes I *do* think that naive script writers will tend to do the right
> thing with NodeLists.

I think that the naive script writer is more likely to write something like
my snippet (which blows up) or yours (which is written much more carefully
and so only has _one_ bug in it) and spend a lot of time head-scratching.

 Stephen R. Savitzky   Chief Software Scientist, Ricoh Silicon Valley, Inc., 
<steve@rsv.ricoh.com>                            California Research Center
 voice: 650.496.5710   fax: 650.854.8740    URL: http://rsv.ricoh.com/~steve/
  home: <steve@starport.com> URL: http://www.starport.com/people/steve/
Received on Friday, 16 October 1998 16:28:12 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 20 October 2015 10:46:04 UTC