我在jQuery中有一个for循环的问题。我正在尝试构建一个广告部分,该部分将动态旋转到上一个广告。
不幸的是,jQuery为我的增量器提供了一个静态值。
这是我的代码
function ads(){
var i = 0;
for(i=0; i<=3; i++){
$("#adBox").delay(5000).hide("slide", { direction: "up" }, 1000);
$("#adBox").delay(1000).show("slide", { direction: "right" }, 1000);
$("#adContent").load("adPage" +i+".php");
}
}
ads();
答案 0 :(得分:1)
这里有一些可能相关的事情:
console.log("i: " + i);
,则在执行此代码时应该会看到四行写入浏览器的JavaScript控制台,例如:i: 0 i: 1 i: 2 i: 3
每次循环执行时,将按以下顺序执行以下操作:
"adPage" + i + ".php"
。返回页面后,它将被加载到元素#adContent中。但是,.load()方法立即返回 ,而不等待检索或加载页面。for循环可能在第一次调用.load()之前完成所有四次迭代。
最后,只是关于术语的说明:for循环内置于JavaScript。它与jQuery无关,jQuery是一个JavaScript库。
我怀疑你真正想要发生的是这样的事情:
function ads(i) {
if (i <= 3) {
$("#adBox").delay(5000).hide("slide", { direction: "up" }, 1000, function() {
$("#adBox").delay(1000).show("slide", { direction: "right" }, 1000, function() {
$("#adContent").load("adPage" + i +".php", function() {
ads(i + 1);
});
});
});
}
}
我传递给隐藏,显示和加载的那些匿名函数参数是回调函数。它们将在每个函数完成后执行。