0

このコードを実行できます

str.parentNode.nextSibling.tagName

それに応じて名前を取得します。必要なのはこのnextSibling後なnextSiblingので、これを試しました

str.parentNode.childNodes[3].tagName

動かない?これに対する解決策はありますか?

4

2 に答える 2

3

childNodes[3]parentNodeは、 の2 番目の次の兄弟ではなく、の 4 番目の子を返します。

nextSiblingそのノードを取得するには、 2 回適用できます。

var tagName = str.parentNode.nextSibling.nextSibling.tagName;
于 2012-09-26T05:36:49.607 に答える
1

要素は、 tagNamenextSiblingプロパティを持たないテキスト ノードであるか、まったく存在しない可能性があることに注意してください。この場合、そのプロパティにアクセスしようとするとエラーがスローされます。nextSiblingundefinedtagName

したがって、おそらく次のようなことをしたいと思うでしょう:

var nextSibling = getNextElementSibling(str.parentNode);
var tagName = nextSibling? nextSibling.tagName : ''; // or maybe undefined  

if (tagName) {
  // do stuff

} else {
  // no element sibling was found
}

getNextElementSibling関数は次のようなものです。

function getNextElementSibling(node) {

  while (node && (node = node.nextSibling)) {
    if (node.nodeType == 1) {
      return node;
    }
  }
  // return undefined
}
于 2012-09-26T07:16:10.000 に答える