0

データ フィードのリストを名前 (以下の dataFeed 変数) で表示する Web ページがあり、ユーザーがアイコン (dataFeed + ' dataLink') がデータ フィード名の横に表示されます。フィードに関するこの情報が取り込まれた div (diagWindowContent) を含む非表示の div (diagWindow) があります。getDiagData.php ページは、渡された dataFeed パラメーターを使用して、表示したいこの情報を返します。

最初はこれを試しました...

for (i = 0; i < dataFeeds.length; i++) {
    dataFeed= dataFeeds[i];

    $('#' + dataFeed+ 'diagLink').click(function() {
        $('#diagWindow').toggle();
        $('#diagWindowContent').load('getDiagData.php?dataFeed=' + dataFeed);
    });
}

しかし、それは dataFeeds 配列の最後の dataFeed に対して返されたページのみを表示しました。

次に、このように、toggle() で aa コールバック メソッドを使用してみました...

for (i = 0; i < dataFeeds.length; i++) {
    dataFeed= dataFeeds[i];

    $('#' + dataFeed+ 'diagLink').click(function() {
        $('#diagWindow').toggle('fast', function(dataFeed) {
            return function() {
                $('#diagWindowContent').load('getDiagData.php?dataFeed=' + dataFeed);
            }(dataFeed)
        );            
    });
}

しかし、結果は同じように見え、dataFeeds 配列の最後のデータ フィードの情報が表示されます。

データ フィード名の横にあるアイコンをクリックしたときに、getDiagData.php ページから適切なデータ フィード情報をロードする方法を見つけ出す方法について、助けを求めています。

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

4

2 に答える 2

3

これを試してください..正しいコンテキストで実行していません..

for (i = 0; i < dataFeeds.length; i++) {
    (function(num){
        var dataFeed = num;

        $('#' + dataFeed + 'diagLink').click(function() {
            $('#diagWindow').toggle();
            $('#diagWindowContent').load('getDiagData.php?dataFeed=' + dataFeed);
         });
    })(dataFeeds[i])
}​
于 2012-11-20T18:31:34.880 に答える
0

これはおそらく可変スコープの問題です。次のようなことを試すことができます。

for (var i = 0; i < dataFeeds.length; i++) {
    var dataFeed= dataFeeds[i];

    $('#' + dataFeed+ 'diagLink').click(function() {
        $('#diagWindow').toggle();
        $('#diagWindowContent').load('getDiagData.php?dataFeed=' + dataFeed);
    });
}

追加されたvarキーワードに注意してください

編集:実際には、Sushanthの答えはより正しいものです。Javascriptの変数は関数によってスコープされていると思うので、上記のコードは正しく機能しない可能性があります。彼の意志。

于 2012-11-20T18:30:38.290 に答える