NodeList没有indexOf(element)方法?那么,我怎样才能获得元素索引?
迭代元素,并检查它是否匹配。
在其父级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);
你可以像这样使用Array.prototype.indexOf.call()
let nodes = document.getElementsByTagName('*');
Array.prototype.indexOf.call(nodes, document.body);
NodeList对象是类似于Array的对象。因此可以将其“转换”为数组。
也许它可以成为你的解决方案。
var arr = Array.prototype.slice.call(yourNodeListObject); // Now it's an Array.
arr.indexOf(element); // The index of your element :)