Я пытаюсь сделать цикл с помощью jQuery - PullRequest
1 голос
/ 10 февраля 2010

Все, что мне нужно, это запускать функцию 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 ]

2 голосов
/ 10 февраля 2010
<!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 голос
/ 10 февраля 2010

Ваш код показывает ограничение в 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();
});

Это похоже на то, что вы искали?

Вы можете добавить в массив столько элементов, сколько пожелаете, так как он просто считает длину массива.

1 голос
/ 10 февраля 2010
setInterval(function(){animateAds()}, 100);

Это вызовет вашу функцию 10 раз в секунду (100 мс каждая). Я удалил параметр n, так как он не используется в вашем коде.

Привет.

0 голосов
/ 10 февраля 2010

возможно, вам нужно добавить 'var' в цикл for, если n не объявлено в другом месте

for( var n = 0 ; .... 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...