2012-06-27 3 views
0

jQueryUI 진행 표시 줄이 있고 일련의 내 자신의 자바 스크립트 코드로 이동 한 후에는 앞으로 및 뒤로 빠르게 이동하기 시작합니다. 여기에 관련 자바 스크립트 코드는 다음 다른 사람에 (콘솔 입력 필요)jQuery Progressbar Moving

$(document).ready(function() { 
      $("#progressbar").progressbar({ value: 0 }); 
    }); 

    var pr = 0; 
    var goTo = 0; 
    var speedType = "fast"; 

    function prgMax(speed){ 
     speedType = speed; 
     if(speedType == "slow") { 
      if(pr < 101) { 
       pr=pr+0.2; 
       $("#progressbar").progressbar({ value: pr }); 
       var t = setTimeout('prgMax("slow")', 0.1); 
      } 
      else{ return "Moved"; clearTimeout(); } 
     } 
     else { 
      if(pr < 101) { 
       pr=pr+1; 
       $("#progressbar").progressbar({ value: pr }); 
       var t = setTimeout(prgMax, 0.1); 
      } 
      else{ return "Moved"; clearTimeout(); } 
     } 
    } 

    function prgMin(speed){ 
     speedType = speed; 
     if(speedType == "slow") { 
      if(pr > -1) { 
       pr=pr-0.2; 
       $("#progressbar").progressbar({ value: pr }); 
       var t = setTimeout('prgMin("slow")', 0.1); 
      } 
      else{ return "Moved"; clearTimeout(); } 
     } 
     else { 
      if(pr > -1) { 
       pr=pr-1; 
       $("#progressbar").progressbar({ value: pr }); 
       var t = setTimeout(prgMin, 0.1); 
      } 
      else{ return "Moved"; clearTimeout(); } 
     } 
    } 

    function prgSet(setting,speed){ 
     speedType = speed; 
     goTo = setting 
     if(speedType == "slow") { 
      if(goTo > pr) { 
       pr=pr+0.2; 
       $("#progressbar").progressbar({ value: pr }); 
       var t = setTimeout('prgSet(goTo,speedType)',0.1); 
      } 
      else if(goTo < pr) { 
       pr=pr-0.2; 
       $("#progressbar").progressbar({ value: pr }); 
       var t = setTimeout('prgSet(goTo,speedType)',0.1); 
      } 
      else if(goTo == pr) { return "Moved"; clearTimeout(); } 
     } 
     else { 
      if(goTo > pr) { 
       pr=pr+1; 
       $("#progressbar").progressbar({ value: pr }); 
       var t = setTimeout('prgSet(goTo,speedType)',0.1); 
      } 
      else if(goTo < pr) { 
       pr=pr-1; 
       $("#progressbar").progressbar({ value: pr }); 
       var t = setTimeout('prgSet(goTo,speedType)',0.1); 
      } 
      else if(goTo == pr) { return "Moved"; clearTimeout(); } 
     } 
    } 

그리고 난 사항 clearTimeout를 (추가하여 문제의 일부를 고정

<div style="height:32px; display:inline-block; left:39px; right:5px; position:absolute;" id="progressbar"></div> 

내 HTML)의 경우 문하지만, 진행 막대 시작 다음과 같은 시리즈를 콘솔에 넣으면 앞뒤로 움직입니다.

prgMax() //Wait until it's done then 
prgMin("slow") //Wait until it's done then 
prgSet(5,"slow") 

누구 아이디어가 있습니까? 사전에 감사 드리며 뭔가 이해가되지 않는다면 의견을 말하십시오!

답변

1

setTimeout()에는 문자열을 사용하지 말아야합니다. 또한 0.1 밀리 초가 너무 짧아서 브라우저를 처리 할 수있는 최소값이 약 4 밀리 초입니다.