2015-12-15 63 views
-1

看看我codehttp://jsfiddle.net/qbd596tf/3/我試圖用setTimeout的,但它是不是在這裏工作


          
  
function func(text1, text2) 
 
{ 
 
    var text = text1; 
 
    var length = text.length; 
 
    var counter = 0; 
 
    var soFar = ""; 
 
    var i = setInterval(function() { 
 
     if(counter == length) 
 
     { 
 
      if(text == text1) { 
 
       text = text2; 
 
       soFar = ""; 
 
       counter = 0; 
 
       document.getElementById("div").innerHTML = ""; 
 
      } 
 
      else { 
 
       text = text1; 
 
       soFar = ""; 
 
       counter = 0; 
 
       document.getElementById("div").innerHTML = ""; 
 
      } 
 
     } 
 
     else { 
 
     soFar = text.charAt(counter); 
 
     counter++; 
 
     document.getElementById("div").innerHTML += soFar; 
 
     } 
 
    }, 250); 
 
} 
 
func("HELLO HELLO", "WORLD");
<div id="div"></div>

我想這樣做,當完成這個詞顯示,該函數將採取5秒的「破發」然後消失這個單詞並顯示另一個單詞(這個東西正在工作,問題在於「休息」)。

我試圖使用setTimeout但它不起作用。

有什麼建議嗎?

+0

要顯示 「世界」,等待5秒鐘,然後顯示「HELLO HELLO」並永遠重複這一點? – bluefog

+0

HELLO HELLO(text1)然後是WORLD(文字),並且是@bluefog – Roy

回答

1

試試這個方法。我已經使用了的setTimeout但clearInterval後:

function func(text1, text2){ 
    var text = text1; 
    var length = text.length; 
    var counter = 0; 
    var soFar = ""; 
    var i = setInterval(showWord, 250); 

    //---Function to showWord 
    function showWord(){ 
    if(counter == length){ 
     if(text == text1) { 
     text = text2; 
     soFar = ""; 
     counter = 0; 

     //---Clear the interval and setting a new interval 
     clearInterval(i); 

     setTimeout(function(){ 

      document.getElementById("div").innerHTML = ""; 

      i = setInterval(showWord, 250); 

     }, 5000); 
     } 
     else { 
     text = text1; 
     soFar = ""; 
     counter = 0; 

     document.getElementById("div").innerHTML = ""; 

     } 
    } 
    else { 
     soFar = text.charAt(counter); 
     counter++; 
     document.getElementById("div").innerHTML += soFar; 
    } 
    } 
} 
func("HELLO HELLO", "WORLD"); 

jsfiddle

+0

謝謝,但我希望這個「休息」會在一個字之後,而不是兩個,你能修好嗎? – Roy

+0

是的,我可以解決這個問題。我現在在手機上。我會更新代碼;) – ElChiniNet

+0

準備好我的朋友。你只需要改變代碼塊的位置。如果沒關係,現在讓我來。 – ElChiniNet

0

你可以試試這個解決方案(JSfiddle):

function setTimeToStartInterval(text2, text1, startIn){ 
    console.log(startIn) 
    setTimeout(function(){ 
    startNewInterval(text2, text1, 50) 
    }, startIn); 
} 

function startNewInterval(text1, text2, duration){ 
     var text = text1; 
      var length = text.length; 
      var counter = 0; 
      var soFar = ""; 
    var a = setInterval(function(){ 


      if(counter == length){ 
     console.log(2222) 
        if(text == text1) { 
      clearInterval(a); 
         text = text2; 
         soFar = ""; 
         counter = 0; 
         document.getElementById("div").innerHTML = ""; 
      setTimeToStartInterval(text2, text1, 5000, 'startNewInterval') 
        } 
        else { 
      console.log(3333) 
         text = text1; 
         soFar = ""; 
         counter = 0; 
         document.getElementById("div").innerHTML = ""; 
        } 
       } 
      else { 
     console.log(1111) 
       soFar = text.charAt(counter); 
       counter++; 

         document.getElementById("div").innerHTML += soFar; 

       } 

     }, duration) 
} 

startNewInterval("HELLO HELLO", "WORLD", 250); 
相關問題