Javascript 如何在第一个下一个签名之后获得下一个签名?

Javascript 如何在第一个下一个签名之后获得下一个签名?,javascript,Javascript,我们能够运行此代码 str.parentNode.nextSibling.tagName 并得到相应的名称。我们需要的是nextSibling之后的nextSibling,所以我们尝试了这个 str.parentNode.childNodes[3].tagName 它不起作用了吗?此问题的任何解决方案?childNodes[3]将返回parentNode的第四个子节点,而不是第二个子节点 要获取该节点,可以应用nextSibling两次: var tagName = str.parentNo

我们能够运行此代码

str.parentNode.nextSibling.tagName
并得到相应的名称。我们需要的是
nextSibling
之后的
nextSibling
,所以我们尝试了这个

str.parentNode.childNodes[3].tagName

它不起作用了吗?此问题的任何解决方案?

childNodes[3]
将返回
parentNode
的第四个子节点,而不是第二个子节点

要获取该节点,可以应用
nextSibling
两次:

var tagName = str.parentNode.nextSibling.nextSibling.tagName;

childNodes[3]
将返回
parentNode
的第四个子节点,而不是其下一个兄弟节点

要获取该节点,可以应用
nextSibling
两次:

var tagName = str.parentNode.nextSibling.nextSibling.tagName;

请注意,元素的
nextSibling
可能是一个文本节点,它没有标记名属性,或者可能根本不存在,在这种情况下
nextSibling
将是
未定义的
,尝试访问其
标记名
属性将抛出错误

因此,您可能希望执行以下操作:

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

if (tagName) {
  // do stuff

} else {
  // no element sibling was found
}
function getNextElementSibling(node) {

  while (node && (node = node.nextSibling)) {
    if (node.nodeType == 1) {
      return node;
    }
  }
  // return undefined
}
getNextElementSibling
函数类似于:

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

if (tagName) {
  // do stuff

} else {
  // no element sibling was found
}
function getNextElementSibling(node) {

  while (node && (node = node.nextSibling)) {
    if (node.nodeType == 1) {
      return node;
    }
  }
  // return undefined
}

请注意,元素的
nextSibling
可能是一个文本节点,它没有标记名属性,或者可能根本不存在,在这种情况下
nextSibling
将是
未定义的
,尝试访问其
标记名
属性将抛出错误

因此,您可能希望执行以下操作:

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

if (tagName) {
  // do stuff

} else {
  // no element sibling was found
}
function getNextElementSibling(node) {

  while (node && (node = node.nextSibling)) {
    if (node.nodeType == 1) {
      return node;
    }
  }
  // return undefined
}
getNextElementSibling
函数类似于:

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

if (tagName) {
  // do stuff

} else {
  // no element sibling was found
}
function getNextElementSibling(node) {

  while (node && (node = node.nextSibling)) {
    if (node.nodeType == 1) {
      return node;
    }
  }
  // return undefined
}

那么这是做什么的呢?它是同一个str.parentNode.childNodes[2]。标记名?@user,否,它做的事情相当于
str.parentNode.parentNode.childNodes[+1]。标记名
。那么它是做什么的呢?它是同一个str.parentNode.childNodes[2]。标记名?@user,否,它的作用相当于str.parentNode.parentNode.childNodes[+1]。标记名
。你说得对空间是一个大问题,它会导致未定义,尤其是在右侧之间?你说得对空间是一个大问题,它会导致未定义,尤其是在右侧之间?