nextNodeメソッド

for構文でノードをループさす場合、カウンター変数とノード総数を利用るのが通常。NodeListオブジェクトのnextNode()メソッドを利用する方法もある。

nextNode()メソッド

・NodeListオブジェクトのメソッド。NodeList内の次のノードを返す。
・(書式)戻り値 = NodeListオブジェクト.nextNode()
・戻り値・・・NodeListオブジェクト内の現在位置の次に位置するノードを返す。次に位置するノードが存在しない場合nullを返す。(初期状態のNodeListオブジェクトでは、現在位置は先頭ノードの前に位置する。よって最初にnextNode()が呼び出されると先頭ノードを返す。)

★(HTMLソース 注)

(注1)・・・<main>要素集合の先頭ノードから開始し、次の<main>要素、次の<main>要素・・・・とループし、最終的にオブジェクト変数"oj"がnullになるまで繰り返す。
(注2)・・・(注2a)で先頭ノードを取得する(即ち、"<main>大阪日本橋データ</main>")。だから(注2b)のループでは2番目のノードから開始されることになる。

[サンプルHTML文書を表示](下のフレームに)

XMLソース

<?xml version="1.0" encoding="Shift_JIS" ?>
<root>
<title>KodayanHPのContents</title>
<!--以下はKodayanHomepageの内容一覧-->
<contents>
<list>
<main>大阪日本橋データ</main>
<sub>日本橋Map</sub>
<sub>PCショップ名一覧</sub>
<sub>PCショップ価格比較</sub>
<sub>日本橋関連リンク集</sub>
</list>
<list>
<main>Webプログラミング</main>
<sub>CSSとDynamicHTML</sub>
<sub>PerでCGI</sub>
<sub>XML</sub>
<sub>Java Script</sub>
<sub>Java Applet</sub>
<sub>VB SCript</sub>
</list>
<list>
<main>その他</main>
<sub>お気に入りリンク集</sub>
<sub>お知らせ</sub>
<sub>HPの履歴</sub>
<sub>掲示板</sub>
<sub>アンケート</sub>
</list>
</contents>
</start>

HTMLソース

<SCRIPT language="JavaScript"><!--
function Test1(){
var xmlobj=new ActiveXObject("MSXML2.DOMDocument");
xmlobj.async=false;
xmlobj.load("test02.xml");
var objMain = xmlobj.getElementsByTagName("main");
var str = "<main>要素は";
for(var oj=objMain.nextNode();oj;oj=objMain.nextNode()){ //(注1)
str += "\n\t\t\t" + oj.xml;
}
dv.innerText = str;
}
function Test2(){
var xmlobj=new ActiveXObject("MSXML2.DOMDocument");
xmlobj.async=false;
xmlobj.load("test02.xml");
var objBasi=xmlobj.selectNodes("//list").item(0).childNodes;
var str = objBasi.nextNode().text; //(注2a)
for(var oj=objBasi.nextNode();oj;oj=objBasi.nextNode()){ //(注2b)
str += "\n\t\t\t" + oj.text;
}
dv.innerText = str;
}
//--></SCRIPT>
</HEAD>
<BODY>
<BUTTON onclick="Test1()">要素名が「main」の内容だけ取り出す</BUTTON>&nbsp;&nbsp;
<BUTTON onclick="Test2()">日本橋関連のデータは</BUTTON><br><br>
<DIV id="dv" style="margin-left:20px;border:1px solid green">&nbsp;&nbsp;</DIV>

end(04/5/9)