[18] HTMLCollection
, NamedNodeMap
などと似ていますが、
継承関係にはありません。
[19] 元々の DOM0 に基づく集成は HTMLCollection
の方で、
NodeList
は後から DOM1 で追加されたものです。
[1] NodeList
界面は、 Node
の順序付きの集まりを扱います。
この集まりをどう実装するかは定義・制約されていません。
method | item | 項目を取得 | [DOM1] |
読取専用属性 | length | 個数 | [DOM1] |
[3] どう実装するかは定義しないとしながらも、 >>2 の界面定義はかなりの制約です。 多くのプログラム言語は配列の仕組みを持っていますが、 この定義では必ずしもそれを利用出来ません。 (DOM の最初の実装である JavaScript の流儀に強く影響されています。)
例えば perl の束縛なら、 $i
番目の項目 (節) は $$node_list [$i]
で、個数は scalar @$node_list
で取得したいところです。 (perl の場合は、適当な class
に bless しておけば DOM 式と perl
式を同時に実装できますね。)
[4] なお、項目番号 (index
)
は 0
から始まります。
これも束縛先言語との流儀の絡みであまり嬉しい制約ではありません。
(しかしながら、最初の索引番号を何にす(な)るか考えなくて良いと言う意味では嬉しい制約です。)
NodeList[ i ]
と NodeList.item ( i )
は等価とされていますから、 >>3 は真っ当な実装だと思います。NodeList
は活性です。例えば、ある要素節の子節群である NodeList
を得たら、その要素の子節を追加とか削除とかした時に、特に何も指示しなくてもその NodeList
は最新の内容になっている必要があります。childNodes
だけではなく) getElementsByTagName
などで得た NodeList
にも適用される」と述べています。 (違う method の説明にわざわざかくなんて、スコア −1: 余計なもの
です。 ) しかし、これは FE Errata で削除されています。 (予想ですが、この文言は、 get... の検索結果が随時変わる (木に変更が加えられるたびに検索しなおす) 必要があるように解釈出来ますが、そういう解釈は間違いということで削除したんじゃないでしょうか? (ちゃんと削除理由も書いて欲しいなあ。))NodeList
を継承する MathMLNodeList
では、属性値的意味の節群である時についてのみ、活性であると言及しています。これから推測して、 >>7 は正しい (get... method の返り値では、やはり (再検索するという意味での) 活性ではないのではないでしょうか。) <http://www.w3.org/TR/MathML2/appendixd.html#dom_NodeList>NamedNodeMap
があります。 NodeList
が配列なら、 NamedNodeMap
は連想配列です。[11]
Bug 14547 - typeof document.body.childNodes=="function" ("object" expected) (2008-03-22 22:09:03 +09:00
版) <http://bugs.webkit.org/show_bug.cgi?id=14547>
[12] IRC logs: freenode / #whatwg / 20100121 ( 版) <http://krijnhoetmer.nl/irc-logs/whatwg/20100121#l-360>
[13] HTML5 Revision Tracker ( 版) <http://html5.org/tools/web-apps-tracker?from=4701&to=4702>
[14] HTML5 Revision Tracker ( 版) <http://html5.org/tools/web-apps-tracker?from=4701&to=4702>
[20] Document Object Model for MathML ( ( 版)) <http://www.w3.org/TR/2001/REC-MathML2-20010221/appendixd.html#dom_NodeList>
[21] Document Object Model for MathML ( ( 版)) <http://www.w3.org/Math/DOM/mathml2/appendixd.html#dom_NodeList>
[22] IRC logs: freenode / #whatwg / 20130603 ( ( 版)) <http://krijnhoetmer.nl/irc-logs/whatwg/20130603#l-769>
[23] Add a warning note about ArrayClass. · 3c2a039 · whatwg/dom ( 版) <https://github.com/whatwg/dom/commit/3c2a03960ba59e87b5d43cfeb997860b7aef8b98>
[24] [whatwg] Proposal: Adding methods like getElementById and getElementsByTagName to DocumentFragments ( ( 版)) <http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2013-July/040244.html>
[26] Fix #208: remove the Microdata API · whatwg/html@2aaecb8 ( 版) <https://github.com/whatwg/html/commit/2aaecb89900b875b9ee8357fa8bccf48477358bb>