我已经修改了Travis J 的答案,不包括 TextNodes 并从中制作了一个函数。
您可以在控制台中运行它并查看(在 stackoverflow 上)。
经典方式:
function getNodeindex( elm ){
var c = elm.parentNode.children,
i = c.length;
while(i--)
if( c[i] == elm )
return i
}
使用 ES2015:
const getNodeindex = elm => [...elm.parentNode.children].findIndex(c => c == elm)
// or
const getNodeindex = elm => [...elm.parentNode.children].indexOf(elm)
演示:
const getNodeindex = elm => [...elm.parentNode.children].indexOf(elm)
<button onclick="console.log( getNodeindex(this) )">get index</button>
<button onclick="console.log( getNodeindex(this) )">get index</button>
<button onclick="console.log( getNodeindex(this) )">get index</button>
我还想指出关于同一问题的另一个线程,它有一个很好的答案(对于寻求旧版 IE 支持的人)