1

JavaScriptを使用してギャラリーの画像を取得しようとしていますが、問題が発生します。

$(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

私はubuntuでfirefox3.6.8を使用しています

アップデート

君たちありがとう。

この問題はfetchNextPage()関数が原因であることがわかりました。

コメントアウトすると、ループの問題は解決されます。

ただし、別の画像セットをフェッチするためにajax関数を実行するには、fetchNextPage関数が必要です。

以下は機能です

function fetchNextPage(currentPage) {

    newUrl = currentUrl + currentPage;

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

        }
    });
}

無限のギャラリーが機能するようにするにはどうすればよいですか?

ありがとうございました。

4

3 に答える 3

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

更新:追加されたコードについて、いくつか質問とコメントがあります。

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か?

于 2010-08-28T17:49:02.180 に答える
0

間隔ID変数を正しく定義するには、var前に追加してみてください。intervalID = window.setInterval

于 2010-08-28T17:49:08.533 に答える
0

アレックスの答えは、起こりうる問題をほのめかしました。

このコードは、他のコードがどこにも存在しないテスト環境で問題なく機能します。

ただし、intervalIDグローバル変数として定義されています。の値も定義するコードを他の場所で実行している場合は、このコードintervalID全体を踏みにじることになります。

var intervalIDこの変数の範囲を制限するために使用します。

于 2010-08-28T17:54:38.333 に答える