Мерзкий ишак и рекурсивный setTimeout
function scroll(x) {
div = document.getElementById("portfolio-wrapper");
if (x == 1) {
y = document.getElementById("portfolio").offsetWidth - 920 + 5;
if (div.scrollLeft < y) {
div.scrollLeft+= 2;
}
else {
div.scrollLeft = y;
$scroll = false;
}
}
else if (x == 0) {
$scroll = false;
}
else if (x == -1) {
div.scrollLeft-= 2;
}
else {
return false;
}
if ($scroll) {
setTimeout(scroll, 2, x);
}
return true;
}
Вот эта функция работает во всех нормальных браузерах, кроме нашего уродца. Поясняю сделал карусельку наводишь на стрелочку и начинает содержимое прокручиваться. В IE цикл выполняется всего один раз не знаю почему. Как заставить работать? |
У setTimeout два параметра: функция и задержка, так что нужно сделать как-то так:
setTimeout(function(){ scroll(x); }, 2);
|
Цитата:
|
а я и проверил в самом начале тела функции вставил alert($scroll); один раз выскочило окошко при наведении и всё
|
Sweet, заработало! спасибо, но тормозит жуть.
|
Цитата:
- Вместо else if используй switch - Использовать var или нет - дело твое, но вот что странно. Зачем каждый раз заново брать элементы "portfolio-wrapper" и "portfolio".offsetWidth? Вынеси эту операцию за пределы функции. |
| Часовой пояс GMT +3, время: 13:47. |