我有一个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);
}
}):
}
}
答案 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
}
}