在setInterval的几分钟后文本开始闪烁javascript

在setInterval的几分钟后文本开始闪烁javascript

问题描述:

我正在使用setInterval函数帮助每隔10秒更改一次文本。 它工作得很好,但5-6分钟后,它开始以毫秒为单位改变它的文本,所以它看起来像闪烁。在setInterval的几分钟后文本开始闪烁javascript

我的代码是:

var wordArray = ["TEXT1","TEXT2","TEXT3"]; 

function typingEffect() { 
    var rand = Math.floor(Math.random()*3); 
    $("#big-bob h5").text(wordArray[rand]); 
    $("#big-bob h5").addClass("animate"); 
    setInterval(typingEffect,10000); 
} 

typingEffect(); 
+1

发生这种情况的原因是每次添加新的setInterval函数离子被称为。请使用clearInterterval或将setInterval更改为setTimeout。注意区别:https://developer.mozilla.org/en-US/Add-ons/Code_snippets/Timers – jeff

你正在创建一个新的时间间隔,每次你执行typingEffect()功能...

var wordArray = ["TEXT1","TEXT2","TEXT3"]; 

function typingEffect() { 
    var rand = Math.floor(Math.random()*3); 
    $("#big-bob h5").text(wordArray[rand]).addClass("animate"); 
} 

setInterval(typingEffect,10000); 
typingEffect(); // This last line is only needed if you want to execute the function 
       // when page loads (otherwise, first execution will be after the 
       // first 10 seconds) 

要做到这一点在你的方式,你应该使用setTimeout()。 ...

var wordArray = ["TEXT1","TEXT2","TEXT3"]; 

function typingEffect() { 
    var rand = Math.floor(Math.random()*3); 
    $("#big-bob h5").text(wordArray[rand]).addClass("animate"); 
    setTimeout(typingEffect,10000); 
} 

typingEffect(); 
+0

嗨A. Lglesias非常感谢。这工作得很好。但我需要更多信息。在这个函数中的时间是10秒,在动画(css)上它也是10秒,但是两者不匹配。 – VikashSDNT

+0

是的,定时器可能会因CPU负载等而受到延迟(Web浏览器与所有应用程序一样,轮换CPU时间段,并且根据负载情况,他们必须等待的时间会有所不同)。你应该设置一个大于css动画的'setTimeout'间隔持续时间,以确保css动画有足够的时间在下一个'setInterval'迭代到来之前完成。可能1秒的差异应该足够了,但请尝试不同的值以根据您的需求进行调整。 –

+0

嗨A. Lglesias,再次感谢。现在我又遇到了问题。其实我不想随机的字符串。我想通过数组wordArray一步一步的字符串。请帮帮我。 – VikashSDNT