0

我们可以运行这段代码

str.parentNode.nextSibling.tagName

并获得相应的名称。我们需要的是nextSibling在这之后nextSibling所以我们尝试了这个

str.parentNode.childNodes[3].tagName

不管用?有什么解决办法吗?

4

2 回答 2

3

childNodes[3]将返回 的第四个孩子parentNode,而不是它的第二个下一个兄弟。

要获取该节点,您可以申请nextSibling两次:

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

请注意,一个元素nextSibling可能是一个文本节点,它没有tagName属性,或者可能根本不存在,在这种情况下nextSibling会存在undefined并且尝试访问其tagName属性将引发错误。

因此,您可能想要执行以下操作:

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 回答