我正在尝试延迟函数调用,但此刻我没有错误,也没有调用函数。
这是我正在处理的代码:
http://jsbin.com/cipewozali/edit?html,css,js,console,output
特别是它的功能如下:
function setRandomPos(elem) {
$(elem).css({
'transition-duration': getRandomInt(400000, 500000) + 'ms',
'transform': 'translateX(' + getRandomPos().x + 'px) translateY(' + getRandomPos().y + 'px)'
})
setTimeout(fadeOut(elem), 200);
/*setTimeout(function() {
fadeOut(elem);
}.bind(elem), 200);*/
}
我既尝试了功能也没有功能。我想要的是在几毫秒后我的fadeOut(elem)函数被执行。
亲切的问候。
答案 0 :(得分:0)
问题是你已经在调用方法而不是在200ms之后指定它需要执行的函数的引用。
所以这个:
setTimeout(fadeOut(elem), 200);
已在此行执行fadeOut代码,无论是:
setTimeout(fadeOut, 200);
将在200ms后调用fadeOut方法。
由于您要指定元素,您可以添加匿名包装函数,如:
setTimeout(function(){
fadeOut(elem);
}, 200);
在现代浏览器中,您可以在延迟后添加可选参数,例如:
setTimeout(fadeOut, 200, elem);
答案 1 :(得分:-1)
您应该使用 delay :
function setRandomPos(elem){
$(elem).css({
'transition-duration': getRandomInt(400000, 500000)+'ms',
'transform': 'translateX('+getRandomPos().x+'px) translateY('+getRandomPos().y+'px)'
}).delay(200,function(){fadeOut(elem)});
}