- 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>
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