Javascript中的增量运算符不增加值

Javascript中的增量运算符不增加值,javascript,jquery,arrays,Javascript,Jquery,Arrays,我有一个数组,其中我存储了7个图像作为数字。我希望这些图像定期更改。但是,增量运算符似乎不起作用。请给我一个解决方案 我的代码是 $(document).ready(function(){ var img_array = [1, 2, 3, 4, 5, 6, 7], i = 0; setInterval(function(){ $('main').css('background-image', function(){

我有一个数组,其中我存储了7个图像作为数字。我希望这些图像定期更改。但是,增量运算符似乎不起作用。请给我一个解决方案

我的代码是

    $(document).ready(function(){
      var img_array = [1, 2, 3, 4, 5, 6, 7],
      i = 0;
      setInterval(function(){
         $('main').css('background-image', function(){
            for(i; i <= 7; i++){

            return( 'url(images/main-bg' + img_array[i] + '.jpg)');

         }

      });
     }, 5000);

  })
$(文档).ready(函数(){
var img_数组=[1,2,3,4,5,6,7],
i=0;
setInterval(函数(){
$('main').css('background-image',function(){

对于(i;i数组中有七个元素,计数器将循环八次0、1、2、3、4、5、6、7,因为条件是,您不需要使用
for
循环,只需在setInterval内递增
i

$(document).ready(function(){
      var img_array = [1, 2, 3, 4, 5, 6, 7],
      i = 0;
      var len = img_array.length;
      setInterval(function(){
         $('main').css('background-image', function(){
            return( 'url(images/main-bg' + img_array[i] + '.jpg)');
         });
         //increment here
         i++;
         // if variable value equal to array length then reset 'i'
         if(i==len)i=0;
     }, 5000);

  });

for
循环执行任何操作之前,您将返回一个
url

这就是您需要的:

$(document).ready(function(){
    var img_array = [1, 2, 3, 4, 5, 6, 7],
    i = 0;
    setInterval(function(){
        $('main').css('background-image', function(){
            i = (++i % 7);
            return( 'url(images/main-bg' + img_array[i] + '.jpg)');
        });
    }, 5000);
})
“魔法”发生在
i=(++i%7);


每次间隔执行函数时,该行将
i
增加
1
,并在
6
时将
i
重置回
1
(数组在JS中为零索引)

您忘记在第3行将i定义为var使用var i=0;@aM Vee实际上,在循环之外声明
i
是没有意义的。此外,正如@Jeff Watkins指出的,您还有一个off by one错误。使用
for(var i=0;i<7;i++)
。问题是,你从循环中返回
,这意味着第一次迭代会中断循环并退出函数。将i变量数据类型声明为var,例如:var i=0;这家伙是否否决了所有答案?见鬼,我没有回答。你的函数有什么意义??,即使你让它工作起来,它也会继续运行下去st您将只看到最后一个图像。就是这样。谢谢@Cerbrus。但是循环完成后,我可以回到第一个图像吗?当第一个图像显示为“未定义”。@CodeName44:我的代码已经这样做了。
I=(++I%7)中的
%7
将变量重置为
0
,只要它到达
7
。当它到达循环后的第一个图像时,它会显示“main bg undefined.jpg”。可能是什么问题?@CodeName44:你能用我的答案仔细检查一下
返回之前的那一行吗?是的,现在发生的是dat,脚本只拾取奇数值。没有带偶数索引的图像。!!$(文档)。就绪(function(){var img_array=[1,2,3,4,5,6,7],I=0;setInterval(function(){$('main').css('background-image',function(){i=(++i%7)+1;return('url(images/main bg'+img_array[i]+'.jpg);},5000);})看看你的代码,当
i==7
时会发生什么?哎呀,对不起,这就是你没有编写单元测试的结果;)现在,看看您的代码,当
i==7
时会发生什么?对于
i=7
,它将返回图像,然后返回
i++
i==8
并将重置
i=0;
返回的确切字符串是什么('url(images/main bg'+img_array[i]+'.jpg'));
将在
i
7
时返回,然后?@Cerbus,是的,但是
对于(i;我查看了数组,它有多少个元素?当然,

$(document).ready(function(){
  var img_array = [1, 2, 3, 4, 5, 6, 7],
  var i = 0;
  setInterval(function(){
     $('main').css('background-image', function(){
        var img = 'url(images/main-bg' + img_array[i] + '.jpg)';
        i++;
        if ( i > 6) {
          i = 0;
        }
        return(img);
     }
  });
 }, 5000);
$(document).ready(function(){
      var img_array = [1, 2, 3, 4, 5, 6, 7],
      i = 0;
      var len = img_array.length;
      setInterval(function(){
         $('main').css('background-image', function(){
            return( 'url(images/main-bg' + img_array[i] + '.jpg)');
         });
         //increment here
         i++;
         // if variable value equal to array length then reset 'i'
         if(i==len)i=0;
     }, 5000);

  });
$(document).ready(function(){
    var img_array = [1, 2, 3, 4, 5, 6, 7],
    i = 0;
    setInterval(function(){
        $('main').css('background-image', function(){
            i = (++i % 7);
            return( 'url(images/main-bg' + img_array[i] + '.jpg)');
        });
    }, 5000);
})