Показать сообщение отдельно
  #9 (permalink)  
Старый 05.08.2019, 02:49
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от рони
        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>
Ответить с цитированием