如何在javascript中获取元素的索引?

问题描述 投票:9回答:3

NodeList没有indexOf(element)方法?那么,我怎样才能获得元素索引?

javascript
3个回答
6
投票

迭代元素,并检查它是否匹配。

在其父级childNodes集合中查找元素索引的通用代码。

function index(el) {
    var children = el.parentNode.childNodes,
        i = 0;
    for (; i < children.length; i++) {
        if (children[i] == el) {
            return i;
        }
    }
    return -1;
}

用法:

// should return 4
var idx = index(document.body.childNodes[4]);

编辑:我不能删除一个接受的答案,但@kennebec的答案下面的答案要好得多,我将逐字引用:

你可以像这样使用Array.prototype.indexOf.call()

let nodes = document.getElementsByTagName('*');
Array.prototype.indexOf.call(nodes, document.body);

37
投票

你可以像这样使用Array.prototype.indexOf.call()

let nodes = document.getElementsByTagName('*');
Array.prototype.indexOf.call(nodes, document.body);

10
投票

NodeList对象是类似于Array的对象。因此可以将其“转换”为数组。

也许它可以成为你的解决方案。

var arr = Array.prototype.slice.call(yourNodeListObject); // Now it's an Array.
arr.indexOf(element); // The index of your element :)
© www.soinside.com 2019 - 2024. All rights reserved.