Есть следующая структура:
<ul id="drumLeft">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<ul>
Через интервалы я сделал, чтобы она через каждые 100 мс смещалась вниз на 20 px.
Теперь мне нужно, чтобы раз в секунду последний элемент списка переставлялся из конца на начало.
Я сделал так:
function swapElem() {
var i = drumLeft.getElementsByTagName('LI');
i[i.length-1].style.marginTop = -1000+"px";
}
setInterval(swapElem,1000);
p.s. drumLeft - айдишник ul.
От такой реализации перетаскивание происходит только один раз (через первую секунду). Я так понял, что это потому, что js заранее определяет переменные и больше их через setInterval не переопределяет.
Тогда сделал так:
function swapElem() {
drumLeft.getElementsByTagName('LI')[drumLeft.getElementsByTagName('LI').length-1].style.marginTop = -1000+"px";
}
setInterval(swapElem,1000);
Вроде без переменных, но ситуация аналогична. Как быть?
UPD. Новая рабочая система:
var aa = drumLeftLi.length-1;
function swapDrum() {
// Первому элементу делаем zIndex повыше
if (aa+1 == 10) {
drumLeftLi[0].style.zIndex = 40;
} else {
drumLeftLi[aa+1].style.zIndex = 40;
}
// Последнему элементу делаем zIndex ниже, чтобы при прокрутке он не перекрывал другие элементы
drumLeftLi[aa].style.zIndex = 38;
// Переставляем последний элемент на начало
drumLeftLi[aa].style.marginTop = parseInt(drumLeftLi[aa].style.marginTop,10) -1000+"px";
if (aa >= 1) {
aa--;
} else {
aa = drumLeftLi.length-1;
}
}
setInterval(swapDrum,200);