0

画像がなくなるまで画像を画像「i」に変更したいのですが、最初からやり直したいと思います。

これは私がする必要があることです

  • i>=nになるまで次のコードを実行します
  • 次に、iをゼロにリセットします

コード:

  function advanceSlide()
  {
    i++;
    currentIMG ='"image"+i';
    changeBG(currentIMG);
  }

これは私がこれまでに持っているものです、私はループが終わったときに私を休ませることによってのみ混乱しています:

  window.setInterval(function(){
    advanceSlide();
    }, 5000);

  function advanceSlide(){
    while (i<n){
      i++;
      currentIMG='"Image"+i';
      changeBG(currentIMG);
    }
  };

これは、 i <nの場合に必要なことをカバーしているので、 iが n以上の場合にどうすればよいかを教えてください。

4

4 に答える 4

1

グローバルを使用するimgIndex

imgIndex = 0;
noOfImages = 10;

function advanceSlide(){
  imgIndex++;
  if( imgIndex >= noOfImages ) { imgIndex = 0; }
  currentIMG = "Image" + imgIndex;
  changeBG(currentIMG);
}
于 2012-08-14T01:26:52.017 に答える
1

関数内でラップする必要はありませんadvanceSlide。モジュロを使用してリセットiを取得できます

window.setInterval(advanceSlide, 5000);
function advanceSlide(){    
    i = (i+1)%n;
    currentIMG="Image"+i;
    changeBG(currentIMG);   
}
于 2012-08-14T01:28:02.287 に答える
0

次回は質問を明確にしてください。

int i = 0;
while (true){
        i++;
        if (i<n){
           currentIMG='"Image"+i';
           changeBG(currentIMG);
        }
        else
        {
           i = 0;
        }
}
于 2012-08-14T01:27:31.737 に答える
0

i> = nの場合、ループを終了し、while(){}の後に入力したコードを続行します。

設定した間隔では、他の1つの関数を呼び出すだけなので、そこでクロージャを作成する必要はありません。次のように簡略化できます。window.setInterval(advanceSlide, 5000);

インデックスをインクリメントするだけなので、whileループをforループに置き換えることもできます

window.setInterval(advanceSlide, 5000);

function advanceSlide() {
    for(i = 0; i < n; i++) {
        // also here don't really need to store in a variable just pass straight in
        changeBG("Image" + i)
    }
}

この回答では、間隔が関数を呼び出す方法であると想定しています...ここでの別の回答は、タイマーなしで何度もループする方法として、他のループを内部に持つwhile(1)ループを使用することを示しています

于 2012-08-14T01:27:33.473 に答える