For循环只在某些地方调用对象中的最后一个数组,而在其他地方则不调用



我正在从JSON文件调用一个对象数组:

if (results !=null && results.value !=null {
for (var i = 0; i < result.value.length; i++) {
time = results.value[i].starttime;
place = results.value[i].location;
who = results.value[i].attendee;
console.log("first test", time, place, who);
}
}
function(error) {
alert ("Error here" + error.message);
}
$(#homepagetime).html(time);
$(#homepageplace).html(place);
$(#homepagewho).html(who);
console.log("second test", time, place, who);

名为"first test"的控制台日志以以下方式成功显示json的每个结果:

12:00 India Gandhi
14:00 England Elizabeth
16:00 USA Obama

这正是我想要的,但当我让下面的代码在主页时间、主页位置和主页分隔符中显示结果时,什么都不会出现。对于控制台日志"第二次测试",我只返回对象中的第一个数组,而不是剩余的数组,例如:

12:00 India Gandhi

很明显,它只调用对象中的第一个数组,但我不明白为什么考虑for循环会指定所有数组。我还在学习JavaScript。

您的(显示(代码必须在循环中,您可以使用字符串串联或append((函数将数据附加到div元素

for (var i = 0; i < results.value.length; i++) {
time = results.value[i].starttime;
place = results.value[i].location;
who = results.value[i].attendee;
console.log("first test", time, place, who);
$(#homepagetime).append(time + '<br>');
$(#homepageplace).append(place + '<br>');
$(#homepagewho).append(who + '<br>);
}

显示结果的代码在循环之外,这意味着它将只执行一次,而不是像预期的那样对每个数组元素执行。每个循环迭代中设置的变量时间、地点和人员,以及最后剩下的是上一次迭代的结果。请注意,即使将显示代码移动到循环内部,html函数也会替换元素上当前的内容,因此,每次循环迭代都会替换结果,最终得到与当前相同的内容。我建议将结果连接起来,或者为每个结果动态创建一个新元素。

您应该在循环中添加html,以便分配值。在循环外,由于闭包,您将获得最后一个值。

for (var i = 0; i < result.value.length; i++) {
time = results.value[i].starttime;
place = results.value[i].location;
who = results.value[i].attendee;
console.log("first test", time, place, who);
$(#homepagetime).html(time);
$(#homepageplace).html(place);
$(#homepagewho).html(who);
}

最新更新