如何获得文档中的下一个节点,而不是下一个兄弟节点?

时间:2016-09-05 23:29:33

标签: javascript

在javascript中,你如何获得dom中的下一个节点而不是下一个兄弟节点?在xpath中他们有这个。

以下面的html为例:

1049

我想要一个函数,当我在节点上运行它时,#34;当前"它返回节点" next"。为了清楚起见,我使用的是id。

3 个答案:

答案 0 :(得分:1)

我会说这样的事情可行,假设node是起始节点。

while( !node.nextSibling && node.parentNode) node = node.parentNode;
node = node.nextSibling; // will be null if node was last in document

这将获得文档中的下一个节点 - 尽管我不确定您是否将孩子视为"后续"在这种情况下。如果是这样,你应该从:

开始
if( node.firstChild) node = node.nextChild;
else {
    while ...
}

答案 1 :(得分:0)

jQuery中的

会有以下工作:

function findNextNode(ElementToSearch) {
  if (ElementToSearch.next().length == 0) {
    return ElementToSearch.parent().next();
  } else {
    return ElementToSearch.next();
  }
}

var nextNode = findNextNode($('#current'));

答案 2 :(得分:0)

function next(current)
{
    var parent = current.parentNode,
        children = parent.children,
        //childNodes、nextSibling maybe contain ObjectText
        length = children.length;
    for(var i=0;i<length;i++)
    {
        if(current == children[i])
            break;
    }
    //if not lastChild
    if(i<length-1) 
    {
        return children[i+1];
    }
    else
    {
        //recursion search until parent == document.body
        if(parent != document.body)
        {
            return next(parent);
        }
        else
        {
            window.console.warn("Can not get next sibling");
        }
    }

}