Javascript中的增量运算符不增加值
我有一个数组,其中我存储了7个图像作为数字。我希望这些图像定期更改。但是,增量运算符似乎不起作用。请给我一个解决方案 我的代码是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(){
$(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);
})