jquery for循环显示隐藏元素

时间:2012-09-04 16:57:00

标签: jquery for-loop

我在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();

1 个答案:

答案 0 :(得分:1)

这里有一些可能相关的事情:

  • for循环语法没有明显的错误。如果在循环中添加console.log("i: " + i);,则在执行此代码时应该会看到四行写入浏览器的JavaScript控制台,例如:
i: 0
i: 1
i: 2
i: 3
  • 每次循环执行时,将按以下顺序执行以下操作:

    1. 向元素#adBox的动画队列添加5秒的延迟,然后向队列添加上滑动画。
    2. 将这些项目添加到队列后,不等待延迟或动画开始,将另一个延迟和右侧滑动动画添加到同一个元素的队列中。
    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);
                });
            });
        });
    }
}

我传递给隐藏,显示和加载的那些匿名函数参数是回调函数。它们将在每个函数完成后执行。