将For循环参数传入每个语句

时间:2012-06-04 17:55:37

标签: javascript jquery json google-maps

我有一个JSON提要,正在进入每个语句。我想做的是for loop var i我想在每个语句中使用这个值。在下面的示例中,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使用{for循环语句中i等于的数字。因此,如果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);
            }
        }):
    }
}​

2 个答案:

答案 0 :(得分: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”是来自for循环的“i”的副本。因此,处理函数具有固定值以进行比较。

答案 1 :(得分: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
}

}