- From: Stephen R. Savitzky <steve@crc.ricoh.com>
- Date: 16 Oct 1998 12:15:33 -0700
- To: <www-dom@w3.org>
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 }
Answer:
It deletes all of the odd-numbered paragraphs in aDocument, and finally
throws a null pointer exception (NOT a DOMException, since item throws no
exceptions) on line 5 when i > numberOfParagraphs/2. Of course, in a
language like C++ on an OS like Windows, it simply crashes.
Notes:
Caching the length of a NodeList in this way is the only reasonable thing
to do in most cases, because computing it is so expensive. The _correct_
way of deleting all the paragraphs in a document is, of course, to
replace line 3 with:
3' for (int i = numberOfParagraphs - 1; i >= 0; i--) {
but I suspect that this might not be obvious to the ``naive'' script-
writer.
Question 2:
Is this really what you mean by catering to the needs of naive
programmers?
--
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 15:11:06 UTC