@ktishko2016

Как записать это циклом?

Есть js код, он работает как надо, но я хочу записать его циклом. Как это сделать?
experimentElem[0].onmouseenter = function() {
	gifElem[0].play()
}
experimentElem[0].onmouseleave = function() {
	gifElem[0].pause()
}

experimentElem[1].onmouseenter = function() {
	gifElem[1].play()
}
experimentElem[1].onmouseleave = function() {
	gifElem[1].pause()
}

experimentElem[2].onmouseenter = function() {
	gifElem[2].play()
}
experimentElem[2].onmouseleave = function() {
	gifElem[2].pause()
}

experimentElem[3].onmouseenter = function() {
	gifElem[3].play()
}
experimentElem[3].onmouseleave = function() {
	gifElem[3].pause()
}


Я пытался сделать это, но оно не работает:
for (var i = 0; i < experimentElem.length; i++) {
	experimentElem[i].onmouseenter = function() {
		gifElem[i].play()
	}

	experimentElem[i].onmouseleave = function() {
		gifElem[i].pause();
	}
}
  • Вопрос задан
  • 209 просмотров
Решения вопроса 2
sergiks
@sergiks Куратор тега JavaScript
♬♬
В исходном варианте с var переменная i в любых вызовах навешанных функций имеет последнее своё значение из цикла, равное длине experimentElem.

Замените var на let:
for (let i = 0; i < experimentElem.length; i++) {

старый ответ
Попробуйте так:
[...experimentElem].forEach((el, i) => {
  el.addEventListener('mouseenter', event => gifElem[i].play());
  el.addEventListener('mouseleave', event => gifElem[i].pause());
})
Ответ написан
@ktishko2016 Автор вопроса
Замените var на let:
for (let i = 0; i < experimentElem.length; i++) {
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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