1

私のコードは次のようになります。

$(document).ready(function(){
    var cont = 0;

    function func1(cont)
    {
        //Some code here
        search.setSearchCompleteCallback(this, searchComplete, null);
        //Some other code
    }
    func1(cont);

    function searchComplete()
    {
        //Some code
        cont += 1;
    if (cont < length ) {
    func1(cont);
    } else {
            // Other code
    }
    }
});

だから私がしたいのは、 func1(cont); の実行を遅らせることです。searchComplete() 関数の内部。この理由は、すべてのコードが Google 検索 API と PageRank チェックを操作するためであり、禁止されないようにスクリプトの速度を落とす必要があるためです。(特に、PRチェックに関するリクエストについて)。func1(cont); で単に setTimeout() を使用すると、関数を $(document).ready() の外に取得しようとすると、func1() が定義されていないと表示されますが、関数は表示されますが、ページを完全にロードする必要があるため、Google コードは表示されません。

setTimeout を修正するにはどうすればよいですか、またはスクリプトを数秒間一時停止するにはどうすればよいですか?

ありがとう!

4

4 に答える 4

5

書く

func1(cont);

なので

window.setTimeout(function() {
    func1(cont);
}, 1000);
于 2009-09-07T17:27:19.173 に答える
1

次のように関数を宣言する代わりに:

function func1(cont) {}

次のように宣言します。

var func1 = function(cont) {}

コードを少し再配置する必要があります。

$(document).ready(function(){
    var cont = 0;
    var func1;

    var searchComplete = function()
    {
        //Some code
        cont += 1;
        if (cont < length ) {
            func1(cont);
        } else {
                // Other code
        }
    }

    func1 = function(cont)
    {
        //Some code here
        search.setSearchCompleteCallback(this, searchComplete, null);
        //Some other code
    }

    func1(cont);
});
于 2009-09-03T20:32:39.423 に答える
0

私はこのようなことを試してみます。jquery 名前空間内で vars と関数を宣言することを好みますが、cont 変数と関数をドキュメント準備完了関数の外に移動して、それらをグローバルに使用できるようにすることもできます。

$(document).ready(function(){
    $.cont = 0;
    $.func1 = function() {
        //Some code here
        search.setSearchCompleteCallback(this, $.searchComplete, null);
        //Some other code
    }

    $.searchComplete = function() {
        //Some code
        $.cont += 1;
        if (cont < length ) {
            setTimeout($.func1,1000);
        } else {
            // Other code
        }
    }

     setTimeout($.func1,1000); // delay the initial start by 1 second
});
于 2009-09-04T00:50:37.313 に答える
0

うまくいけば、私はあなたの説明が正しいと思います:

  • document.ready() イベントが発生します
  • document.ready() 内で、関数を X ミリ秒後に呼び出す必要があります
  • この関数は、Google オブジェクトの search.setSearchCompleteCallback() を別の関数 ( の親オブジェクトが必要なようですthis)に接続します。

この場合、document.ready() スコープ内で宣言された関数が必要なのはなぜですか? 単純に 3 つすべてをグローバルにすることはできませんか? 例えば

var search = null; // initialise the google object
var cont = 0;

function timedSearch()
{
  search.setSearchCompleteCallback(this, searchComplete, null);
}

function searchComplete()
{
   if (++cont < length) // postfix it below if this is wrong
       setTimeout(timedSearch,1000);
}

$(document).ready(function()
{
   setTimeout(timedSearch,1000);
}

誤解した場合は、反対票を投じてください。

于 2009-09-07T17:18:26.897 に答える