提问人:Miu 提问时间:9/22/2022 最后编辑:Felix KlingMiu 更新时间:9/22/2022 访问量:187
如何使用 .indexOf 获取 NodeList 中事件元素的索引
How to get an index of event element in a NodeList with .indexOf
问:
我需要知道目标元素的索引。我的代码抛出错误。不适用于 NodeList?.indexOf()
const divs = document.querySelectorAll('div');
function isFirst(event) {
// Fine
console.log(event.target == divs[0]);
// But... Error! Why?
console.log(divs.indexOf(event.target));
}
divs.forEach(e => e.addEventListener('click', isFirst));
<div>0</div>
<div>1</div>
<div>2</div>
<div>3</div>
答:
1赞
David Thomas
9/22/2022
#1
它会导致错误,因为返回的是 NodeList,而不是 Array;和 – – 是 Array 的方法,而不是 NodeList,因此无权访问该方法。document.querySelectorAll()
indexOf
Array.prototype.indexOf()
indexOf()
您可以改用 Array 文字和扩展语法将可迭代的 NodeList 转换为 Array:
const divs = document.querySelectorAll('div');
function isFirst(event) {
// Fine
console.log(event.target == divs[0]);
// But... Error! Why?
console.log([...divs].indexOf(event.target));
}
divs.forEach(e => e.addEventListener('click', isFirst));
<div>0</div>
<div>1</div>
<div>2</div>
<div>3</div>
引用:
评论
divs
indexOf
forEach