鉴于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;
}
答案 0 :(得分:2)
你的函数似乎返回了一些奇怪的结果,主要是因为它还会计算textNodes,注释和其他所有内容,而不仅仅是元素。
我这样做,通过兄弟元素计算并使其为零
function getNodeIndex(elem) {
if (elem && elem.parentNode) {
var i = 0;
while( elem.previousElementSibling ) {
i++;
elem = elem.previousElementSibling;
}
return i;
}
return -1;
}