正确的代码。它打印在控制台:
https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcSCFJNHQ2k1hvNCD3F9zKp9WiPooSBkjUy-ymynu1T0kmiaW-7r
这是相当正确的,bacaouse的只有一个search_objects项。
在循环中非常奇怪的行为javascript
var j;
for (j=0;j< search_objects.length; j++){
console.log(j)
website = search_objects[j].website;
var rand = Math.floor(Math.random()*3)
var img_src;
switch (rand){
case 0: img_src = "res1.png"; break;
case 1: img_src = "res2.png"; break;
case 2: img_src = "https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcSCFJNHQ2k1hvNCD3F9zKp9WiPooSBkjUy-ymynu1T0kmiaW-7r"; break;
}
console.log(img_src);
var template_result = '<div class="owl-item " ..........div>'
console.log(search_objects[j].ID_subr)
add_carousel_item(template_result)
}
但是如果我改变它为for循环它会再执行一次。
var j; //same thing if i declare like this: for(var j in search_objects)
for (j in search_objects){
console.log(j)
website = search_objects[j].website;
var rand = Math.floor(Math.random()*3)
var img_src;
switch (rand){
case 0: img_src = "res1.png"; break;
case 1: img_src = "res2.png"; break;
case 2: img_src = "https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcSCFJNHQ2k1hvNCD3F9zKp9WiPooSBkjUy-ymynu1T0kmiaW-7r"; break;
}
console.log(img_src);
var template_result = '<div class="owl-item " ..........div>'
console.log(search_objects[j].ID_subr)
add_carousel_item(template_result)
}
而这种循环在这第二种情况下将被执行2时间时search_objects只有一个项目,这是通过打印到控制台的对象本身和它的长度被证明。
虽然这是显示在控制台中。
1 //长度
0 //Ĵ
res1.png //从的Math.random IMG
66 // j的第一项
独特//值的属性??????! !!!!!!!!!!!!
res2.png // IMG从的Math.random
未定义//似乎显示search_objects [唯一]
公告的性质:发生这种情况大部分的时间。不是100%的时间。让我们说这不会发生,当我把它作为我刷新页面后做的第一件事。 以前有人见过这样的事情吗?
可能重复[在JavaScript中通过数组循环](http://stackoverflow.com/questions/3010840/loop-through-array-in-javascript) –
那么没有理由使用'for ..无论如何,在数组的循环中。 – Pointy