我正在尝试用jQuery创建一个循环

时间:2010-02-09 23:10:11

标签: jquery loops

我需要做的就是一遍又一遍地运行animateAds函数。有人可以帮忙吗?这是我的代码:

function animateAds(n) {
    $('#ad_1').fadeIn('slow', function (){
        $('#ad_1').delay(100).fadeOut('fast', function (){
            $('#ad_2').fadeIn('slow');
        });
    });
};

$(document).ready(function() {
    for (n = 0; n < 10; n++) {
    animateAds(n);
    }
});     

4 个答案:

答案 0 :(得分:2)

<!doctype html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
<script>
var i=0;
function animateAds() {
    if(i==9){return;}
    $('#ad_2').fadeOut('fast',function(){
      $('#ad_1').fadeIn('slow', function (){
        $('#ad_1').delay(100).fadeOut('fast', function (){
          $('#ad_2').fadeIn('slow', function(){i++;animateAds();});
        });
      });
    });
};
$(document).ready(function() {
    animateAds();
    });
</script>
</head>
<body>


<img id='ad_1' style='display:none' src='http://sstatic.net/so/img/logo.png'>
<br>

<img id='ad_2' src='http://sstatic.net/so/img/logo.png'>

我不确定这是否理想,但它可以作为一个自包含的页面。这是你想要做的吗?

答案 1 :(得分:1)

setInterval(function(){animateAds()}, 100);

这将每秒调用您的函数10次(每次100毫秒)。我剥离了n参数,因为它没有在你的代码中使用。

问候。

答案 2 :(得分:1)

您的代码显示的限制为10,但您的问题听起来像是希望它永久存在。

这是一个如何永久运行的例子。如果你想要限制,那么它将是回调中if()语句的简单重写。

$('document').ready(function() {    
    var elements = ['#ad_1','#ad_2'];
    var i = 0;
    var limit = elements.length;
    function rotateAds() {
        $(elements[i]).fadeIn(400);
        $(elements[i]).delay(1000).fadeOut(200,function(){
                                                    i++;
                                                    if(i == limit) i = 0;
                                                    rotateAds();
                                                })
    }
    rotateAds();
});

这看起来与你想要的相近吗?

您可以根据需要向数组添加任意数量的元素,因为它只计算数组的长度。

答案 3 :(得分:0)

也许您需要在for循环中添加'var',除非在其他地方声明了

for( var n = 0 ; ....