2013-04-15 3 views
0

두 개의 JS 함수가 있습니다. 진행률 막대를 표시하는 load() 함수와 페이지로드 후로드 실행을 중지시키는 kill() 함수가 있습니다. 이제 다른 페이지가로드되면로드 기능이 모든 페이지에서 호출된다는 것을 알면서 진행 막대가 표시되지 않습니다. 문제가 발생한 위치와 문제를 해결할 수있는 방법이 있으면 알려주십시오.다른 JS 함수를 중지시키는 JS 함수

<script type="text/javascript"> 
    var count=0; 
    function load(i) { 
     j = parseInt(i); 
     document.getElementById("progressBar").style.display = "block"; 
     count=count+1; 
     if (document.all) { 
      document.all.btn1.value=count+'%'; 
      document.all.progressbar.pic1.width=2*count; 
     } 
     else { 
      document.getElementById("pic1").width=2*count; 
      document.getElementById("bar").width=count+'%'; 
     } 
     if (count<100) { 
      setTimeout('load(j)',j); 
     } 
     if(count==100) { 
      document.getElementById("progressBar").style.display = "none"; 
      count=0; 
     } 
    } 

    function kill(){ 
     if (document.applets[0].isActive()) { 
      document.getElementById("progressBar").style.visibility = "hidden"; 
     } 
    } 

</script> 

가 사전에 감사합니다

여기 내 코드입니다! load()에서

답변

1

당신은 표시block로 변경하고 있지만 kill()에 당신은 hidden가시성을 설정; 대신 디스플레이none으로 설정해야하므로 다음 번에 다시 block으로 올바르게 설정할 수 있습니다. Read about visibility.

최적화 된 코드 : 당신이 변수에 setTimeout를 할당하면

<script type="text/javascript"> 
    var count = 0, 
     win = window, 
     doc = document, 
     progressBar = doc.getElementById("progressBar"), 
     t, j; 

    function load(i) { 
     j = parseInt(i); 
     progressBar.style.display = "block"; 
     count++; 

     // no actual need to check if doc.all is available 
     // just select through id 
     doc.getElementById("pic1").style.width = 2*count; 
     doc.getElementById("bar").style.width = count+'%'; 

     if (count < 100) { 
      t = win.setTimeout('load(j)',j); 
     } else { 
      progressBar.style.display = "none"; 
      win.clearTimeout(t); 
      count = 0; 
     } 
    } 

    function kill(){ 
     if (doc.applets[0].isActive()) { 
      progressBar.style.display = "none"; 
     } 
    } 

</script> 
+0

이 답변 주셔서 감사합니다. "none"값을 사용하면 진행률 표시 줄이 각 페이지에 표시되지만 여전히 kill 기능이 제대로 작동하지 않습니다. 페이지가로드되면 진행률 표시 줄에 진행률 표시 줄이 나타납니다. 나는 일단 페이지가로드되면 사라지게하는 방법을 찾으려고 노력할 때까지있다. clearTimeout()을 추가했지만 진행률 표시 줄에 영향을 미치지 않습니다. 어떤 제안이라도 대단히 감사하겠습니다. 고맙습니다. – user2275278

+0

문제가 해결되었습니다. kill()에 clearTimeout을 추가해야했습니다. 모든 것이 제대로 작동하고 있습니다. 고맙습니다. – user2275278

0

, 당신은 그것을 중지 그것에 사항 clearTimeout를 사용할 수 있습니다.
예. 는 그 도움이된다면 알려주세요 clearTimeout(t);으로 중지 t = setTimeout('load(j)',j); 와 시간 제한을 설정하고 있습니다 의미 :

+0

답장을 보내 주셔서 감사합니다. 이전 답변에서 clearTimeout을 시도했지만 페이지가로드 될 때 진행률 막대가 계속 표시됩니다. JS 함수를 죽이는 다른 방법이 있습니까? 도와 줘서 고마워. – user2275278

+0

문제가 해결되었습니다. kill()에 clearTimeout을 추가해야했습니다. 모든 것이 제대로 작동하고 있습니다. 고맙습니다. – user2275278