不确定这是否是最好的方法,但这就是我正在尝试的内容:
示例代码:
$("#someElement").mouseout(function() {
var firstLoop = setTimeout(function() {
//do something
}, 2000);
setTimeout(function() {
//do something else
}, 4000);
var timer = 1000;
setTimeout(firstLoop, timer); //this doesn't works
});
我试图无限循环。
答案 0 :(得分:1)
setTimeout(firstLoop,timer); //这不起作用
因为setTimeout
(firstLoop
)没有返回setTimeout
期望的函数引用。
成功
var firstLoop = function(){
setTimeout(function() {
//do something
}, 2000);
}
来自您的评论
@arnoldemzi的目标是在超时时无限循环,所以, 第一个功能然后第二个然后第一个然后第二个......依此类推。
只需使用setInterval
$("#someElement").mouseout(function() {
var firstLoop = function() {
console.log( "something" );
};
setTimeout(function() {
//do something else
}, 4000);
var timer = 1000;
setInterval(firstLoop, timer); //this doesn't works
});
答案 1 :(得分:0)
如果您希望在某个时间间隔内重复某些内容,可以使用setInterval,并将您想要重复的函数以及以毫秒为单位的间隔传递给它。
我已经稍微改变了你的代码,以证明这一点:
$('button').click(function() {
var firstLoop = function() {
console.log('first')
};
setTimeout(function() {
console.log('second')
}, 4000);
var timer = 1000;
setInterval(firstLoop, timer);
});
在这里查看一个工作小提琴:https://jsfiddle.net/hgnm1mph/3/