2015-12-15 67 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); 
相关问题