将 for 循环参数传递到每个语句中



我有一个JSON提要,它正在拉入每个语句。 我想做的是 for 循环 var i我希望在 each 语句中使用这个值。 在下面的示例中,for 循环将运行 0、1、2。 如果是i == 1,那么我想运行 JSON 提要,但仅适用于i = 1值。 目前,当 if 语句被触发时,JSON 每个语句都贯穿所有项目 b/c,它i值从 0 开始。 因此,我现有的console.log返回 0、1、2。 我希望它只返回 1。 感谢您的任何帮助。

编辑
我的重点是使每个语句中的i $.each(data.DATA, function(i, item) {使用 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);
            }
        }):
    }
}​

您需要引入一个额外的函数作用域才能完成这项工作。

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"的副本。 因此,处理程序函数具有要比较的固定值。

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
}

}

最新更新