4

我有一个 JSON 提要,它正在拉入每个语句。我想做的是 for loop vari我希望在每个语句中使用这个值。在下面的示例中,for 循环将运行 0、1、2。如果i == 1这样,我想运行 JSON 提要,但仅针对i = 1值。目前,当 if 语句被触发 JSON 每个语句运行所有项目 b/c 它的i值从 0 开始。所以console.log我已经到位返回 0、1、2。我希望它只返回 1。谢谢任何帮助。

编辑
我的重点是$.each(data.DATA, function(i, item) {i这个 each 语句中使用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是在另一个函数中创建的。通过这样做,在循环中检查的变量“i”是.each()循环中“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 回答