2016-07-27 2 views
0

재귀 시간 초과 함수가 이러한 이미지를 한 번만 통과하는 이유를 알 수 없습니다. "else"문에서 변수 'n'을 재설정하더라도 종료가 계속됩니다. 이 목표는 이미지의 z 점수를 변경하여 스왑 아웃하는 것입니다.Image Swapper를 사용한 재귀

var n = 0; 
window.onload = imageFade; 

function imageFade(){ 
    for(x=0; x<10; x++){ 
     document.getElementById("image" + x).style.zIndex = 0; 
    } 
    timeout(); 
} 

function timeout() { 
    setTimeout(function(){ 
     if(0 <= n <= 9){ 
      document.getElementById("image" + n).style.zIndex = 1; 
      n++; 
      timeout(); 
     }else{ 
      n=0; 
      timeout(); 
     } 
    }, 1000); 
} 
+1

'(0 <= N <= 9) {'로 n < 11를 사용합니까? – Rayon

+0

'for 루프'가 자동으로 모든 이미지를 통과하기 때문에 유일한 방법입니다. 각 반복마다 시간이 초과되는 "timed for loop"같은 것은 없습니다. 그래서 나는 "for loop"와 "if else"진술을 혼합 한이 이상한 종류에 의지하고있다. – Mangofett

+0

timed for 루프를 수행 할 수 있습니다. –

답변

1

if 조건

var n = 0; 
 
var t = 0; 
 
var timer = null; 
 
timeout(); 
 

 
function timeout() { 
 
    timer = setTimeout(function() { 
 
    if (n < 11) { 
 
     console.log(n); 
 
     ++n; 
 
     timeout(); 
 
    } else { 
 
     n = 0; 
 
     // call `clearTimeout(timer)` following five iterations of `0-10` 
 
     if (++t === 5) { 
 
     clearTimeout(timer); 
 
     return; 
 
     }; 
 
     timeout(); 
 
    } 
 
    }, n === 11 ? 0 :1000); 
 
}

+0

'timeout'은 인자를 기대하지 않기 때문에 이것은 부모 범위에 많은 상태를 가지고 있습니다. 나는 그것을 추천하지 않을 것이다. – ftor