Показать сообщение отдельно
  #1 (permalink)  
Старый 03.07.2012, 11:50
Новичок на форуме
Отправить личное сообщение для Nina_2012 Посмотреть профиль Найти все сообщения от Nina_2012
 
Регистрация: 03.07.2012
Сообщений: 4

Бегущая строка на js. Остановка при наведении.
День добрый! Такая задача:
Бегущая строка снизу вверх, очередная прокручиваемая строка приостанавливается на неск. секунд, при наведении блок останавливается пока не уберут курсор. Прокрутка циклична.
Проблема: если навести на одну строку, потом сразу на другую, код не успевает это обработать и всё сбивается - блок со строками, не реагируя на курсор, уезжает вверх.
Исходный код:
<div id="anim" style="position: relative; height: 25px; background-color: aqua; line-height: 25px;" onmouseover="window.isStart = false" onmouseout="window.isStart = true; animateNews(number);">
    <div id="anim2" style="position: absolute; margin-top: 25px;">
        <a href="#">1111111</a><br />
        <a href="#">2222222</a><br />
        <a href="#">3333333</a>
    </div>
</div>

isStart = true;
    number = 0;
    
    function animateNews(i){
        number = i;  // какая строка по счету крутится
        if(isStart == true){
            len = jQuery('#anim').height();   // вычисляет, на какой интервал поднимать строку, чтобы в нужный момент сделать ее остановку на пару сек
            a1 = jQuery('#anim2').height();
            bottom = parseInt("-" + a1);
            size = a1 / len;
            a2 = parseInt(jQuery('#anim2').css('bottom'));
            jQuery('#exam').html(bottom);
            if((i <= size) && (a2 < len)){
                jQuery("#anim2").animate({"bottom": "+="+len+"px"}, 1000);
                
                if(i<size)
                    setTimeout("animateNews("+(i+1)+")", 2000);
                else
                    setTimeout("animateNews("+(i+1)+")", 1010);
            }else{   // условие для последней строки, чтобы перевести блок на исходное положение и начать сначала
                jQuery("#anim2").css({'bottom': bottom});
                i=0;
                setTimeout("animateNews("+(i)+")", 0);
            }
        }else{
            return;
            //setTimeout("animateNews("+(i)+")", 500);
        }
    }
    animateNews(0);


Может можно остановить блок другими путями (приостановить функцию), либо еще что дописать? Направьте, плиз

Последний раз редактировалось Nina_2012, 03.07.2012 в 11:58.
Ответить с цитированием