2012-08-07 63 views
2

我在一個類下有不同的元素,我希望它們在無限循環內隨機淡入和淡出。我可以讓他們現在隨機淡入,但堅持淡化元素。在無限循環中淡入淡出

另一件事是,在淡出之後,我想要延遲幾秒鐘,然後再次淡入。

這是我的代碼片段,希望它會有所幫助。

$(document).ready(function() { 
    $('.share').each(function(i){ 
     var rand = 1 + Math.floor(Math.random() * 7);//max of random 7 seconds 
     $(this).fadeIn(rand*1000).delay(500).fadeOut(); 
    }); 
}); 
+0

對不起,該怎麼做? – ocinisme 2012-08-07 04:10:21

+2

對於您的答案很好的問題,請點擊最佳答案旁邊的複選標記。 – 2012-08-07 04:13:08

+2

欲瞭解更多信息,請訪問:http://meta.stackexchange.com/questions/16721/how-does-accept-rate-work – 2012-08-07 04:14:21

回答

3

如果你想淡出之間的間隔是隨機的,以及,你可以使用這個:

$('.share').each(function(i) { 
    loopInfinitely($(this)); 
}); 

function loopInfinitely(elem) { 
    var rand = 1 + Math.floor(Math.random() * 7) * 1000;//max of random 7 seconds 
    setTimeout(function() { 
     elem.fadeIn(rand).delay(300).fadeOut(rand); 
     loopInfinitely(elem); 
    }, rand); 
} 


如果你也想的元素出現,爲了消失,你可以使用以下內容:

loopInfinitely($('.share')); 

function loopInfinitely(elems) { 
    var rand = 1 + Math.floor(Math.random() * 7) * 1000;//max of random 7 seconds 
    setTimeout(function() { 
     var i = 0; 
     (function advanceElem() { 
      if (elems.length <= i) { 
       loopInfinitely(elems); 
       return; 
      } 
      elems.eq(i).fadeIn(rand).delay(300).fadeOut(rand); 
      setTimeout(advanceElem, rand*2+300); 
      i++; 
     })(); 
    }, rand); 
} 

讓我知道這是如何工作的。

+0

我試過你的代碼,它給了我未捕獲的類型錯誤:不能調用fadeIn的undefined,我做錯了什麼? – ocinisme 2012-08-07 04:18:28

+0

@ocinisme - 不,我在代碼中發現了一個錯誤(只有第一個調用被傳遞給元素)。再試一次。 – jeff 2012-08-07 04:20:03

+0

謝謝老兄,它工作。順便說一句,我怎麼能調整fadeIn和fadeOut的速度,因此它可能看起來像在元素出現,一個接一個很好地丟失? – ocinisme 2012-08-07 04:22:35

0

做一個fade_element_in()功能與$('.share').fadeIn()裏面,和fade_element_out()功能。然後在每個函數內使用Javascript的setInterval函數在您首選的延遲之後調用其他函數。中提琴,無限循環。

1

您可以使用常規JavaScript計時器定期調用您的代碼。

setInterval(function() 
    { 
     $('.share').each(function(i) 
     { 
      var rand = 1 + Math.floor(Math.random() * 7);//max of random 7 seconds 
      $(this).fadeIn(rand*1000).delay(500).fadeOut(); 
     }) 
    }, 3000); 
+0

我會避免在異步調用中使用'setInterval'。根據我的經驗,它總是在某些時候被解僱。 – 2012-08-07 04:36:21