我有一个具有一系列延迟功能的功能:
function greet(t) {
$("div").delay(t*2).queue(function(n) {
$(this).html("Bonjour");
n();
});
$("div").delay(t*3).queue(function(n) {
$(this).html("Hola");
n();
});
$("div").delay(t*4).queue(function(n) {
$(this).html("Hallo");
n();
});
$("div").delay(t*5).queue(function(n) {
$(this).html("Hello"); // back to original
n();
});
}
greet(500);
用一个简单<div>Hello</div>
的HTML。这样,问候语每 500 毫秒更改一次语言。
函数完成后(大约需要 2 秒;2000 毫秒)我想重新启动函数并无限循环它。所以,我尝试了通常的方法:
setTimeout(function() {
greet(500);
}, 2500); // after 2500ms, repeat the function
如果您注意到,一旦它循环两次,它就会在“Hello”处停止。为什么是这样?这是一个显示我的问题的小提琴http://jsfiddle.net/rgX6B/2/
任何帮助将非常感激!
编辑:
为了提出问题,我实际上简化了我的问题。我不想贴一大堵代码(内部html的更改实际上是涉及更改CSS形状位置的复杂函数。)我的问题最终通过将函数放在setTimeout
内部解决了。谢谢大家的答案!