我是Stack Overflow的新手,所以如果我完全做了一些我不应该做的事情,请让我知道,这样我就可以学习了。如果在setInterval中的语句只能工作一次
无论如何!代码:
$(document).ready(function() {
var imgWidth = $(".window").width();
var imgSize = $(".image_reel img").size();
var imgReelWidth = imgWidth * imgSize;
$(".image_reel").css({
width: imgReelWidth});
var num = 960;
var numImgs = $('div.image_reel img').length;
var currentSlide = 0;
setInterval(function() {
currentSlide++;
if (currentSlide != numImgs) {
$(".image_reel").animate({
left: -num
}, 1000);
}
else {
var setWidth = numImgs - 1;
var newSlideNum = num * setWidth;
$(".image_reel").animate({
left: newSlideNum
}, 1000);
currentSlide = 0;
}
}, 2000);
});
这段代码是应该做的(或至少我认为这是...)是一种通过if语句和2秒,它将循环后检查“当前幻灯片“等于图像的数量。现在,我使用alert函数进行了检查,看看所有的数字是否都是正确的,但是由于某种原因,滑块只能工作一次,就是这样。任何想法为什么?
在此先感谢你们。
只是作出适当的变量全球的:'window.numImgs = $( 'div.image_reel IMG')长;'和'窗口。 currentSlide = 0;否则就像Blender所说的那样,它们是匿名'就绪'函数的局部变量。 – 2011-04-10 14:51:46
@ShadowWizard:他们是局部变量是有帮助的,没有问题(欢呼关闭!);他们没有被自动更新可能会有问题。 (或者,封闭函数是否匿名是否有区别?) – 2011-04-10 16:14:05
@Tomalak好点,因为'setInterval'函数位于声明的函数内部,它应该能够识别这些局部变量。哦,好吧.. :) – 2011-04-10 17:29:14