Тема: Проблема з лічильником в циклі
Здорів. От якщо написати такий код
var elem = document.getElementsByClassName("first");
console.log(elem.length);
onload=function(){
var height = elem[0].getElementsByTagName("li").length*37;
console.log(0);
elem[0].style.transition = ".5s 0 all ease";
elem[0].addEventListener("mouseover",function(){elem[0].style.height = height+"px";});
elem[0].addEventListener("mouseout", function(){elem[0].style.height = "42px";});
var height = elem[1].getElementsByTagName("li").length*37;
console.log(1);
elem[1].style.transition = ".5s 0 all ease";
elem[1].addEventListener("mouseover",function(){elem[1].style.height = height+"px";});
elem[1].addEventListener("mouseout", function(){elem[1].style.height = "42px";});
var height = elem[2].getElementsByTagName("li").length*37;
console.log(2);
elem[2].style.transition = ".5s 0 all ease";
elem[2].addEventListener("mouseover",function(){elem[2].style.height = height+"px";});
elem[2].addEventListener("mouseout", function(){elem[2].style.height = "42px";});
}
То все працює гарно. Але якщо от так це зробити
var elem = document.getElementsByClassName("first");
console.log(elem.length);
onload=function(){
for(var i=0; i<elem.length; i++)
{
var height = elem[i].getElementsByTagName("li").length*37;
console.log(i);
elem[i].style.transition = ".5s 0 all ease";
elem[i].addEventListener("mouseover",function(){elem[i].style.height = height+"px";});
elem[i].addEventListener("mouseout", function(){elem[i].style.height = "42px";});
};
}
то вилазить купа глюків
Але якщо зробити
for(var i=0; i<elem.length-1; i++)
то помилок немає, але працює все зовсім не так, як треба. Треба, щоб при наведені на відповідний <li> - змінювався саме він. А в мене якщо наводити на будь-який <li> - змінюється тільки останній по рахунку. Чому так???