Привет. Есть такой код
<div class='wrapper'>
<div class='dot'></div>
<div class='dot'></div>
<div class='dot'></div>
<div class='dot'></div>
<div class='dot'></div>
<div class='dot'></div>
<div class='dot'></div>
</div>
Через команду
var dots = document.getElementsByClassName('dots');
Получил массив с dot.
Как при клике на каждый в console высвечивалось его index Кликаю на первый элемент в консоль его индекс(0)
очень прошу дать пример кода,
dots.forEach(function(dot, i) {
dot.addEventListener("click", function() {
console.log(i);
});
});
Плох он тем, что приходится навешивать слишком много (а точнее, неоправданно много) обработчиков.
Вместо foreach()
можно, разумеется, воспользоваться и простым циклом:
var i, length = dots.length;
for (i = 0; i < length; i++) {
dots[i].addEventListener("click", function() {
console.log(i);
});
}
Для его реализации необходимо обернуть необходимые элементы в родительский элемент, своего рода "контейнер" (предположим, у него id = cont
).
Тогда можно навесить один обработчик события на этот контейнер:
var cont = document.getElementById("cont");
cont.addEventListener("click", function(event) { // навешиваем один обработчик на родительский элемент
console.log(dots.indexOf(event.target)); // в свойстве `target` будет содержаться непосредственно тот элемент, по которому кликнули
});
Но в этом случае придется искать индекс элемента в массиве отдельно (метод indexOf()
).
Также стоит помнить, что искомого элемента в массиве может не быть (кликнули не на элемент с классом dot
), а куда-нибудь мимо (но все еще в пределах родительского блока). В этом случае стоит сразу проверить, есть ли элемент в массиве, а затем уже выводить его индекс, если элемент найден - стандартная процедура:
cont.addEventListener("click", function(event) {
var index = dots.indexOf(event.target);
if (~index) {
console.log(index);
}
});
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть код приложенный нижеВ Firefox как и в IE при первом обновлении страницы, как и при последующих будет выводится переданная мной строка
Привет, есть группа ссылокНеобходимо сделать так, чтобы при клике на ссылку запускалась функция
Суть вопроса - установил на свой домен ssl сертификат let's encrypt, установка произошла корректно, при проверке показывает что сайт защищен и тд