2012-10-23 63 views
2

我,每一次改變文本的點擊一個鏈接,但我試圖找到時自動切換到下一個變量一段時間後,有點像一個旋轉的方式。jQuery的添加暫停時以隨機文本陣列

這是我有:

$(document).ready(function() { 
    var quotes = [ 
     'Link 1', 
     'Link 2', 
     'Link 3', 
     'Link 4', 
     'Link 5', 
     'Link 6' 
    ]; 

    function loadQuote(i) { 
     return quotes[i]; 
    } 

    function randNumber() { 
     return Math.floor(Math.random() * quotes.length); 
    } 
    $('#button-reload').click(function() { 
      $(this).html(loadQuote(randNumber())); 
    }); 
    $('#button-reload').html(loadQuote(randNumber())); 
});​ 

,這裏是一個jsfiddle

什麼想法?

+0

+1好問題的格式。 – elclanrs

+0

大量的實踐哈哈的;) –

回答

2
$(document).ready(function() { 
    var quotes = [ 
     'Link 1', 
     'Link 2', 
     'Link 3', 
     'Link 4', 
     'Link 5', 
     'Link 6' 
    ]; 

    var $theLink = $('#button-reload'); 

    function loadQuote(i) { 
     return quotes[i]; 
    } 

    function randNumber() { 
     return Math.floor(Math.random() * quotes.length); 
    } 

    function changeTheQuote() { 
     $theLink.html(loadQuote(randNumber())); 
    } 

    var interval = window.setInterval(function(){ 
     changeTheQuote(); 
    }, 3000); 

    $theLink.click(function() { 
     window.clearInterval(interval); 
     changeTheQuote(); 
     interval = window.setInterval(function(){ 
      changeTheQuote(); 
     }, 3000); 
    }); 
}); 
+0

的編輯編輯Habibillah的回答 – JamesSwift

+0

的版本,它似乎採取第二露面時,第一次加載頁面,是延遲的,是因爲? –

+0

@JB。是的,這是因爲它最初的結構。你從來沒有直接設置鏈接的內容,你只用交換功能。你可以只設置在HTML''Link 1的初始值,也可以添加到'changeTheQuote()的調用;'緊鄰結束前'});' – JamesSwift

3

嘗試使用window.setInterval()像代碼波紋管:

$(document).ready(function() { 
    var quotes = [ 
     'Link 1', 
     'Link 2', 
     'Link 3', 
     'Link 4', 
     'Link 5', 
     'Link 6' 
    ]; 

    function loadQuote(i) { 
     return quotes[i]; 
    } 

    function randNumber() { 
     return Math.floor(Math.random() * quotes.length); 
    } 

    var interval = window.setInterval(function(){ 
     $('#button-reload').html(loadQuote(randNumber()));    
    }, 3000); 

    $('#button-reload').click(function() { 
     $(this).html(loadQuote(randNumber())); 

     //uncomment line bellow to stop intarval when button clicked. 
     //window.clearInterval(interval); 
    }); 
}); 
+1

我把代碼放到一個函數,因此它可以儘快在頁面加載,並在區間稱爲... – elclanrs

+0

我elclanrs同意,還我想補充'window.clearInterval (間隔)'到點擊處理程序,然後重新加載報價後重新開始間隔。這可以避免在手動切換後立即切換報價。 – JamesSwift

+0

感謝@JamesSwift,你能告訴我這方面的一個例子嗎? –