我们可以运行这段代码
str.parentNode.nextSibling.tagName
并获得相应的名称。我们需要的是nextSibling
在这之后nextSibling
所以我们尝试了这个
str.parentNode.childNodes[3].tagName
不管用?有什么解决办法吗?
我们可以运行这段代码
str.parentNode.nextSibling.tagName
并获得相应的名称。我们需要的是nextSibling
在这之后nextSibling
所以我们尝试了这个
str.parentNode.childNodes[3].tagName
不管用?有什么解决办法吗?
childNodes[3]
将返回 的第四个孩子parentNode
,而不是它的第二个下一个兄弟。
要获取该节点,您可以申请nextSibling
两次:
var tagName = str.parentNode.nextSibling.nextSibling.tagName;
请注意,一个元素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
}