我是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