Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript setTimeout()未执行_Javascript_Jquery_Settimeout - Fatal编程技术网

Javascript setTimeout()未执行

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){

我有一个简单的函数,它向用户显示一条消息。如果我添加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);

您传递了什么作为超时参数?这也是不正确的,传递整个函数是完全有效的。你自己看看:错了。将整个函数构造作为参数传递是完全可以接受的。这叫做结束