0

我想将图像更改为图像“i”,直到图像用完,然后我想从头开始。

这是我需要做的

  • 运行以下代码直到i >= n
  • 然后将 i 重置为零

代码:

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

这是我到目前为止所拥有的,我只是在循环完成时休息i感到困惑:

  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在函数中。您可以使用模数来重置我

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() { } 之后放置的任何代码

使用您设置的间隔,那里不需要闭包,因为它只调用另一个函数,可以简化为window.setInterval(advanceSlide, 5000);

您也可以用 for 循环替换该 while 循环,因为您只是在增加索引

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)
    }
}

对于这个答案,我假设您的 Interval 是您想要调用函数的方式...这里的另一个答案显示使用 while(1) 循环和内部的另一个循环,以便在没有计时器的情况下一遍又一遍地循环

于 2012-08-14T01:27:33.473 回答