2010-08-28 24 views
1

我正在嘗試使用JavaScript爲圖庫獲取圖片,但遇到問題。如何爲無限圖庫使用setInterval和clearInterval

$(document).ready(function() { 

    var currentPage = 1; 
    var totalPics = 2; 
    var picPerPage = 1; 
    intervalID = window.setInterval(function() { 
      console.log(currentPage*picPerPage); 
      if (totalPics > (currentPage*picPerPage)) { 
     currentPage++; 
     fetchNextPage(currentPage); 
      } else { 
     clearInterval(intervalID); 
      } 


    }, 2000); 


}); 

由於某種原因,它會保持循環。我想讓它停止的時刻currentPage * picPerPage > totalPics

我使用的Firefox 3.6.8在Ubuntu

更新

謝謝你們。

我意識到問題是由於fetchNextPage()函數。

oncei評論說,循環問題已解決。但是,我需要fetchNextPage函數來運行ajax函數來獲取另一組圖像。

下面

是功能

function fetchNextPage(currentPage) { 

    newUrl = currentUrl + currentPage; 

    $.ajax({ 
     url: newUrl , 
     success: function(data) { 
      // append page 2 themes 
      $('#themes-list').append(data); 

     } 
    }); 
} 

所以我應該怎麼做才能讓我無限的畫廊可以工作?

謝謝。

+0

控制檯上的輸出是什麼? 'currentPage'是否增加? – 2010-08-28 17:19:10

+0

它增加到2.之後,console.log每2秒保持攪動2次。 – 2010-08-28 17:31:49

+0

你能指定你使用的瀏覽器嗎? – Dancrumb 2010-08-28 17:38:55

回答

1

您的代碼適用於我。我把console.log()而不是函數,並沒有正確定義intervalID。這個功能可能會改變數值嗎?

var currentPage = 1; 
var totalPics = 2; 
var picPerPage = 1; 

intervalID = window.setInterval(function() { 

    console.log("A", currentPage*picPerPage); 

    if (totalPics > (currentPage*picPerPage)) { 
     currentPage++; 
     console.log("B", currentPage); 
    } else { 
     console.log("C All Done"); 
     clearInterval(intervalID); 
    } 

}, 2000); 

(OSX上的Chrome 5.0.375.127)我得到的輸出:

A 1 
B 2 
A 2 
C All Done 

UPDATE:所以你添加的代碼我有幾個問題和意見:

function fetchNextPage(currentPage) { 
    var newUrl = currentUrl + currentPage; // Added var declaration here. 
    $.ajax({ 
     url: newUrl , 
     success: function(data) { 
      // append page 2 themes 
      $('#themes-list').append(data); 
     } 
    }); 
} 

所以這裏缺少的是返回的數據......你能提供一個data是什麼值的例子嗎?

+0

嗨邁克爾,謝謝你的回覆。是的,我的fetchNextPage函數正在影響某些東西。儘管我很確定如何。我已更新我的問題。請指教。 :) – 2010-08-28 17:59:05

+0

哦,它現在的作品。 我意外地在數據中再次獲取WHOLE頁面,而不是隻是一堆li元素。 謝謝邁克爾。 :) – 2010-08-29 06:55:50

0

嘗試在intervalID = window.setInterval之前添加var以正確定義intervalID變量。

0

亞歷克斯的回答提到了一個可能的問題。

這段代碼在任何地方都沒有其他代碼的測試環境中工作得很好。

但是,intervalID被定義爲全局變量。如果你在其他地方執行的代碼也定義了intervalID的值,那麼它將會在這一塊上跺腳。

使用var intervalID來限制此變量的範圍。

相關問題