素人がプログラミングを勉強していたブログ

プログラミング、セキュリティ、英語、Webなどのブログ since 2008

連絡先: すかいぷ:javascripter_  か javascripter あっと tsukkun.net skypeのほうがいいです

Nodeの次に位置するノードを探す関数

追記2:XPathを使った方法も載せた
追記:ルート直下の場合でもうまくいくように変更
親ノードがなくなるまで辿る。

この関数は下のように書ける。

function getNextNode(node)
  node.nextSibling ?
    node.nextSibling :
    node.parentNode ?
      getNextNode(node.parentNode) :
      null;

getNextNode(document.links[0].lastChild);

もしくはXPathを使って

function getNextNode(node)
  document.evaluate('./following::node()', node, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null)
  .singleNodeValue;

getNextNode(document.links[0].lastChild);

ともできる。
./following::node()の部分を./following::*にすれば、次のエレメントを取得できる。