Javascript setTimeout()未执行
我有一个简单的函数,它向用户显示一条消息。如果我添加timeout参数,它将自动向上滑动,如果没有,用户必须单击它以摆脱。但是超时位不起作用Javascript setTimeout()未执行,javascript,jquery,settimeout,Javascript,Jquery,Settimeout,我有一个简单的函数,它向用户显示一条消息。如果我添加timeout参数,它将自动向上滑动,如果没有,用户必须单击它以摆脱。但是超时位不起作用 function feedback(text, timeout){ $('#feedback').text(text).slideDown('fast'); $('#feedback').click(function(){ $(this).slideUp(); }); if(timeout){
function feedback(text, timeout){
$('#feedback').text(text).slideDown('fast');
$('#feedback').click(function(){
$(this).slideUp();
});
if(timeout){
setTimeout(function(){
$('#feedback').slideup();
}, timeout);
}
}
问题是$'feedback'.slideup;需要大写U,例如。您还可以通过执行以下操作将其整体缩短一点:
function feedback(text, timeout){
var fb = $('#feedback').text(text).slideDown('fast');
if(timeout) fb.delay(timeout).slideUp();
fb.click(function(){
$(this).slideUp();
});
}
这使用jQuery的内置功能以更简洁的方式实现相同的效果。将整个函数调用放在设置的超时函数中是无效的。您的setTimeout将永远不会像您希望的那样触发,因为setTimeout只接受函数引用
setTimeout(function(){
$('#feedback').slideup();
}, timeout);
请尝试以下代码:
var ref = function() {
$('#feedback').slideup();
};
setTimeout(ref, timeout);
您传递了什么作为超时参数?这也是不正确的,传递整个函数是完全有效的。你自己看看:错了。将整个函数构造作为参数传递是完全可以接受的。这叫做结束