2016-07-27 10 views
0

私の再帰的タイムアウト機能がこれらの画像を1回だけ通過する理由がわかりません。 "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ループ"と "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

関連する問題