2013-09-25 5 views
0

У меня есть скрипт, который создает индикатор выполнения и стиль с CSS. Он отлично работает, но как только бар достигает конца, он останавливается, и я не могу заставить скрипт зацикливаться, чтобы он начинался снова. Как я могу зацикливать этот скрипт так, чтобы индикатор выполнения запускался, как только он достигнет конца?Looping javascript function

<script type="text/javascript"> 
$(document).ready(function() { 
var el = $(''#progress''); 
el.animate({ 
width: "100%" 
}, 40000); 
}); 
</script> 


<style> 
#progressKeeper {background:#f2f2f2;display:none;width: 400px;height: 18px;border: 1px   solid #CCC;-moz-border-radius:7px; border-radius:7px;color:#f2f2f2;font-family:Arial;font- weight:bold;font-style:italic;font-size:.9em;margin-bottom:2000px;} 
#progress {background: #005c9e;width: 0;height: 17px;-moz-border-radius:7px; border- radius:7px;} 
</style> 
+0

Одна вещь, которую я хотел бы попробовать, чтобы обернуть скрипт в функцию, и затем цикл с определенным условием, как: 'для (вар я = 0; я Guillermo

ответ

3

Отбросьте JQuery, использование CSS3!

#progress { 
    animation:progress 40s linear infinite; 
    -webkit-animation:progress 40s linear infinite; 
} 

@keyframes progress {from {width:0} to {width:100%}} 
@-webkit-keyframes progress {from {width:0} to {width:100%}} 

Если вы должны поддерживать устаревшие браузеры ... ну, пройти обратный вызов функции animate сказать ему, чтобы начать анимацию снова. Что-то вроде этого:

$(function() { 
    var prog = $("#progress"); 
    anim(); 
    function anim() { 
     prog.css({width:0}); 
     prog.animate({width:"100%"},40000,anim); 
    } 
}); 
+2

+1 для браузера. – Kiruse

+0

Спасибо @kolink! – user2470781

2

Сделать функцию и передать эту функцию на свой .animate вызова в качестве обработчика завершения. См. jQuery().animate().

Что-то вроде:

$(document).ready(function() { 
    function animateProgressBar() { 
     $('#progress').width(0).animate({ 
      width : "100%" 
     }, 40000, animateProgressBar); 
    } 

    animateProgressBar(); 
}); 

(непроверенная)