我需要知道目標元素的索引。我的代碼拋出錯誤。不適.indexOf()用于 NodeList?
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>
uj5u.com熱心網友回復:
它會導致錯誤,因為document.querySelectorAll()回傳的是 NodeList,而不是 Array;并且indexOf– Array.prototype.indexOf()– 是 Array 的方法,而不是 NodeList,因此無法訪問該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>
參考:
Array.prototype.indexOf().- 陣列字面量。
- 傳播語法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/510233.html
