[4] [CODE(DOMi)@en[[[NodeIterator]]]] における[DFN[[RUBYB[[[参照節点]]]@en[reference node]]]]は、
[[探索]]操作の基準点となる[[節点]]です。 [DFN[[CODE(DOMa)@en[[[referenceNode]]]]]]
[[IDL属性]]は、[[参照節点]]を返します。

* 仕様書

[REFS[
- [3] [CITE@en-US[DOM Standard]] ([TIME[2014-06-23 14:49:32 +09:00]] 版) <http://dom.spec.whatwg.org/#dom-nodeiterator-referencenode>
]REFS]

* 参照節点

[1] [[参照節点]]は、初期状態では[[根]]と同じに設定されます。また、
[[参照節点]]またはその[[祖先]]が[[根]]以下の[[部分木]]から[[削除]]された折には、
削除された[[節点]]の前後にある[[節点]]が新たな[[参照節点]]となります。
これらの場合、[[参照節点]]は[[フィルター]]の条件を満たすとは限りません。

[5] [[探索]]操作によって[[節点]]が返される場合、[[参照節点]]はその返された[[節点]]に変更されます。
[[節点]]が返されない場合には、元の[[節点]]のまま変更されません。

[FIG(corollary)[
[6] [[参照節点]]は、常に存在します。
]FIG]

[FIG(corollary)[
[2] [[根]]と[[参照節点]]は、必ず同じ[[木]]に属する[[節点]]となります。
]FIG]

** 参照節点の削除

[8] [[参照節点]]またはその[[祖先]]が[[削除]]されて[[根]]と異なる[[木]]に属することとなった場合、
次のように処理されます [SRC[>>3]]。

[FIG(steps)[
= [9] [CODE(DOMa)@en[[[pointerBeforeReferenceNode]]]] [[IDL属性]]が[[偽]]なら、
[[参照節点]]他削除される[[節点]]の直[[前]]にある[[節点]]を新たな[[参照接点]]とします [SRC[>>3]]。
[[根]]は他の[[節点]]より[[前]]にありますから、そのような[[節点]]は必ず存在します。
= [10] [CODE(DOMa)@en[[[pointerBeforeReferenceNode]]]] [[IDL属性]]が[[真]]なら、
== [12] [[参照節点]]他削除される[[節点]]の直[[後]]に[[節点]]があるなら、
これを新たな[[参照節点]]とします [SRC[>>3]]。
== [11] そうでないなら、
直[[前]]の[[節点]]を新たな[[参照節点]]とし、
[CODE(DOMa)@en[[[pointerBeforeReferenceNode]]]] [[IDL属性]]を[[偽]]にします [SRC[>>3]]。
]FIG]

* 取得器

[7] [CODE(DOMa)@en[[[referenceNode]]]] [[IDL属性]]は、[[参照節点]]を返します [SRC[>>3]]。
[[型]]は [CODE(DOMi)@en[[[Node]]]] です [SRC[>>3]]。