获取节点的索引

时间:2015-04-21 04:30:09

标签: javascript

鉴于DOM中的任意节点,是否可以获取Node的索引以便我可以在nth-child中使用它?我试过以下没有成功

function getNodeIndex(node){
    if(undefined == node){return undefined;}
    if(undefined == node.parentNode){return undefined;}
    if(undefined == node.parentNode.childNodes){return undefined;}
    for (var i=0;i<node.parentNode.childNodes.length;i++){
        if(node.parentNode.childNodes[i]==node){return i;}
    }
    return undefined;
}

1 个答案:

答案 0 :(得分:2)

你的函数似乎返回了一些奇怪的结果,主要是因为它还会计算textNodes,注释和其他所有内容,而不仅仅是元素。

我这样做,通过兄弟元素计算并使其为零

function getNodeIndex(elem) {
    if (elem && elem.parentNode) {
        var i = 0;
        while( elem.previousElementSibling ) {
            i++;
            elem = elem.previousElementSibling;
        }
        return i;
    }
    return -1;
}