Сообщение от рони
|
let listItem = [...this.children];
let index = listItem.indexOf(el);
|
indexOf, как и многие другие методы массива, является обобщённым методом, this в определении не обязательно должен указывать на представителя типа Array. А это значит, что его можно использовать и с экземпляром NodeList, который не нужно приводить к массиву.
<ul>
<li><button>Пункт 1</button></li>
<li><button>Пункт 2</button></li>
<li><button>Пункт 3</button></li>
</ul>
<script>
function navigation(e) {
const el = e.target;
const index = Array.prototype.indexOf.call(this.children, el.closest("li"));
console.log(index);
}
document.querySelector("ul").addEventListener("click", navigation);
</script>