2014-09-13 123 views
0

我試圖創建一個js,將通過顯示類循環,然後循環回到開始。更好地說明我的意思;JS類循環和循環

我有句話,例如:

'我喜歡貓'。

例如,我想用「狗」,「倉鼠」,「獅子」和「魚」兩個詞來代替「貓」一詞。每隔2秒鐘,一個字將被淡入淡出,另一個淡入淡出,一旦到達最後一個字,該循環將再次開始。

我目前正試圖通過讓所有5個單詞與一個不同的類,並試圖每2秒更改每個類的顯示。然而,我對js是新手,我意識到,這是不雅的,可能是不正確的。

在此先感謝您的幫助球員:)

回答

0

一種方法是用JavaScript的setInterval的功能來改變它每2秒。 你有一個動物的陣列,你使用計數器通過它循環。每當計數器達到數組的長度減1時,它將被重置。您可以通過清除setInterval來停止循環。它是用clearInterval(變量)完成的,你傳入setInterval變量 - animalsLoop在我們的例子中。

代碼:

HTML:

<div class="js-animals"></div> 

的Javascript:

var animals = ['cats', 'dogs', 'lions', 'fish']; 
var counter = 0; 

var animalsLoop = setInterval(function() { 

    $('.js-animals').text(animals[counter]); 

    if (counter === animals.length - 1) { 
     counter = 0; 
    } else { 
     counter++; 
    } 
}, 2000); 

的jsfiddle:http://jsfiddle.net/x7wr4zLq/4/

編輯:如果你想要一個很好的淡出/淡入淡出,我們會忘記setInterval。我們將使用的將是具有循環功能的jQuery fadeIn()fadeOut()。所以會發生的是我們調用循環[函數,一旦fadeOut被觸發,並在完成後,我們檢查是否需要重置計數器,並觸發fadeIn。當fadeIn完成時,我們再次調用循環函數,依此類推......等等。

delay()用於淡入淡出。您可以將其設置爲在文本消失之前顯示文本多長時間。

代碼:

HTML:

<div class="js-animals"></div> 

的Javascript:

var animals = ['cats', 'dogs', 'lions', 'fish']; 
var counter = 0; 

// Initialize the first animal 
// so that we don't wait for the first iteration 
$('.js-animals').text(animals[counter]); 

function loop() { 

    $('.js-animals').delay(500).fadeOut(500, function() { 

     // Check if we need to reset the counter 
     if (counter === animals.length - 1) { 
      counter = 0; 
     } else { 
      counter++; 
     } 

     $(this) 
     .text(animals[counter]) 
     .fadeIn(500, loop); 
    }); 
} 

loop(); 

的jsfiddle:http://jsfiddle.net/x7wr4zLq/3/

+0

謝謝你,文字的改變非常出色。我只是想知道是否有一種方法可以爲此添加過渡效果>即淡入淡出每個單詞? – 2014-09-14 12:29:32

+0

當然可以。使用jQuery [fadeIn()](http://api.jquery.com/fadein/)和[fadeOut()](http://api.jquery.com/fadeout/),您可以在每個間隔。我剛剛編輯了我的答案。如果您發現它有幫助,請加註:) – 2014-09-14 12:54:14

+0

新編輯。我已經重寫了我的淡入/淡出代碼。現在它更加正確 - 檢查出來。 – 2014-09-14 13:13:32