4

各ステートメントにプルするJSONフィードがあります。私がやりたいのは、forループ変数iです。この値を各ステートメントで使用したいと思います。以下の例では、forループは0、1、2を実行します。その場合i == 1、JSONフィードを実行しますが、値に対してのみ実行しi = 1ます。現在、ifステートメントがトリガーされると、各ステートメントはすべてのアイテムb / cを実行し、そのi値は0から始まります。したがって、console.logIは0、1、2を返します。1のみを返します。ありがとうございます。どんな助けでも。

編集
私の焦点は$.each(data.DATA, function(i, item) {iこの各ステートメント内iで、forループステートメントと等しい数を使用するようにすることです。したがって、JSONファイルに3つのアイテムがある場合、アイテム1のみが実行されます。

for (var i = 0; i < 2; i++) {
    if (i == 1) {
        $.getJSON("/json/v2_ilt_map.cfm?feedtype=ILTMAP_SCHEDULED&customerID=1&TrainingObjectParent=3", {}, function(data, i) {
            $.each(data.DATA, function(i, item) {
                console.log(i);
            }
        }):
    }
}​
4

2 に答える 2

3

これを機能させるには、追加の関数スコープを導入する必要があります。

function checkOnly(i) {
  return function(data) {
    $.each(data.DATA, function(ii, item) {
      if (ii == i) console.log(ii);
    });
  };
}

for (var i = 0; i < 2; i++) {
    if (i == 1) {
        $.getJSON("/json/v2_ilt_map.cfm?feedtype=ILTMAP_SCHEDULED&customerID=1&TrainingObjectParent=3", {}, checkOnly(i));
    }
}

ここで、渡されるコールバックは$.getJSON別の関数内に作成されます。.each()そうすることで、ループで調べられる変数「i」は、ループからの「i」のコピーforになります。したがって、ハンドラー関数には、比較する固定値があります。

于 2012-06-04T18:07:41.890 に答える
0
for (var i = 0; i < 2; i++) {
  var x = i;
  if (i == 1) {
    $.getJSON("/json/v2_ilt_map.cfm?feedtype=ILTMAP_SCHEDULED&customerID=1&TrainingObjectParent=3", {}, function(data, i) {
        $.each(data.DATA, function(n, item) {
            if(n == x){
                console.log(n);
                break;// you can use break if you want
            }
        }
    }):
    break; // you can use break if you want
}

} </ p>

于 2012-06-04T18:04:56.333 に答える