den0820
@den0820
Фронтенд Junior разработчик.

Как узнать текущий индекс элемента на нативном JS?

Всем привет! На jQuery узнать текущий индекс элемента не составляет труда как написать такой цикл:
var buttons1 = $('button');

	buttons1.each(function(i) {
		$(this).click(function() {
			alert(i + 1);
		});
	});


а вот на нативном JS попробовал аналогично сделать и понял, что мало знаю об области видимости...Кто поможет?
var buttons = document.querySelectorAll('button');


	for(var i = 0; i < buttons.length; i++) {
		var button = buttons[i];

		button.onclick = function() {
			alert(this.innerHTML +  i);
		}
	}


Это мой вариант, но он не работает. В общем при нажатии на кнопку выводится сообщение с индексом этой кнопки. Вариант с jQuery работает, а с JS нативным - нет.
  • Вопрос задан
  • 2241 просмотр
Решения вопроса 1
Ivanq
@Ivanq
Знаю php, js, html, css
var buttons = document.querySelectorAll('button');
for(var i = 0; i < buttons.length; i++) {
    (function(i) {
        var button = buttons[i];
        button.onclick = function() {
            alert(button.innerHTML + i);
        }
    })(i);
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Нужно оборачивать вашу функцию в замыкание.
Вот почему.
Ответ написан
Комментировать
@damir12345
const  buttons = document.querySelectorAll('button');
buttons.forEach(elem, index) => {
    elem.addEventListener('click', function () {
        console.log(index);
    })
})
const
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы