2014-04-12 31 views
0

我已經在這裏很好地研究了這個問題,沒有答案爲我工作。我在屏幕上的同一位置一次顯示一本書中的文字。我試圖讓循環延遲x毫秒,但單詞會立即顯示。用戶只能看到句子中的最後一個單詞。如何添加延遲到Jquery文本顯示

什麼都沒有,setTimeout,setInterval,等待ajaxComplete等減慢了單詞的顯示。

即使我使用ajaxComplete並將單詞循環出Ajax,setTimeout,setInterval也不會減慢單詞的顯示速度。非常令人沮喪。提前感謝您的幫助!

需要保持AJAX異步 - 因爲有按鈕供用戶暫停,跳到等

function showWord(){ 
    $('#thedata').html(word); 
} 

function getThisSentence(){ 
    var sentence; 
    var x; 
    var str = ''; 

    var surl = "how-data.php?choice=1&book_id=7&chap_num=1&sent_num=1"; 
     x = 0;           
     $.ajax({ 
      cache:false, 
      async:true, 
      url:surl, 
      dataType:"json", 
      success: function(data){ 
       words = data.words.split(' '); 
       $.each(words,function() { 
        var time = 1500; 
        word = words[x]; 
        temp - word; 
        setTimeout(function(){ showWord() }, time) 
         time += 1500; 

        x++; 
       }); 

      } 
     }); 

} 

回答

0

乘以該指數超時得到交錯的延遲,這應該是你所需要

function getThisSentence(){ 
    $.ajax({ 
     url  : "how-data.php?choice=1&book_id=7&chap_num=1&sent_num=1", 
     dataType : "json", 
     success : function(data){ 
      $.each(data.words.split(' '), function(index, word) { 
       setTimeout(function(){ 
        $('#thedata').html(word); 
       }, 1500*index); 
      }); 
     } 
    }); 
} 
+0

有趣 - 這工作。唯一的問題,我需要延遲是一個常數。你能否告訴我爲什麼它是一個交錯的延遲,但不是一個恆定的延遲? –

+0

@SheldonGoldberg - 現在你讓我感到困惑,如果你使用一個不變的延遲,所有的單詞都會同時出現,那麼你真正想要的是什麼? – adeneo

+0

我想展示一個病房,而不是延遲1秒,所以讀者可以閱讀這個句子。如果你不拖延,它們都會同時出現。但是,如果延遲相同的數量,例如1000毫秒,則沒有明顯的延遲,並且所有單詞都會同時出現。出於某種原因,在您的交錯指數下,延遲變得明顯。 –

0

使用的setInterval你可以設置一個函數來運行每1500毫秒:

success: function (data) { 
    words = data.words.split(' '); 
    var i = 0; 
    var myVar = setInterval(function() { 
     showWord(i++); 
     if (i >= words.length) { 
      clearInterval(myVar); 
     } 
    }, 1500);  
} 
+0

這不適合我。沒有明顯的延遲。上面的答案是交錯延遲。不幸的是,我需要不斷的延遲。 –